django - 我如何从 Django 查询中提取字段名和值

标签 django django-models django-templates django-views

假设我有这个模型

class Model():
          var1      = models.TextField()
          var2      = models.FloatField()
          var3      = models.FloatField()
          var4      = models.FloatField()

现在我想要一个可以用于所有模型的模板。我的要求是

  1. I want to display var1 , var2 , var 4 in view not var 3
  2. In the template , i don't want to hard code field names like var1 , var2, var3 which i will make the heading of table , so i would like like to get that from array
  3. I want all the data corresponding to those vars


基本上我想要类似的东西
Object_List其中包含 field namesfield values都为 all rows在数据库表中
Object_List -- 我会抢表格SELECT var1, var2, var4 from table
这样我就可以在模板中使用
{% for field in Object_List.fields %}
  <th>{{ field }}</th> 
 {% endfor %}

然后对于数据我可以使用
 {% for object in Object_List.objects %}
            <tr>
            {% for field in object %}
                 <td>{{ value }}</td> 
            {% endfor %}
            </tr>
 {% endfor %}

我不确定我是否解释清楚。是否有可能实现这样的目标。
主要要求是我只想在模板中显示选定的字段,而不是模型中提到的所有字段

最佳答案

似乎这样做的明显方法是使用 values询问:

objects = Model.objects.values('var1', 'var2', 'var4')

这为您提供了一个字典列表,每个字典都将字段名称映射到字段值。因此,您可以从其中的第一个中获取标题行:
{% for object in objects %}
    {% if forloop.first %}
    <th>
       {% for fieldname in object.keys %}<td>{{ fieldname }}</td>{% endfor %}
    </th>
    {% endif %}
    <tr>
      {% for value in object.values %}<td>{{ value }}</td>{% endfor %}
    </tr>
{% endfor %}

关于django - 我如何从 Django 查询中提取字段名和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6608254/

相关文章:

python - 如何修复 : 'TypeError: expected string or bytes-like object' when doing unit test on a views. py 函数

python - Django 应用程序安装抛出错误 require_debug_false

python - 如何在不同的文件中调用 View 方法

Django 1.4 : Why is my context processor not working?

python - 如何在 django 中执行操作后重定向到同一页面

Django模板上下文函数不自动运行

javascript - 如何获取标签名称作为 Django 模板中选定/选中复选框的值

python - unique_together 中的多个元组

python - 如何限制一名用户投一票?

javascript - 为什么 JQuery 不传递替换 div 中的 post_id 和 post_type