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

时间:2011-07-07 09:09:03

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

假设我有这个模型

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

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

  
      
  1. 我想在视图中显示var1,var2,var 4   
  2. 在模板中,我不想硬编码像var1这样的字段名称,   我会做的var2,var3   桌子的标题,所以我想   喜欢从数组中获取
  3.   
  4. 我想要与这些变量相对应的所有数据
  5.   

基本上我想要像

这样的东西

Object_List,其中包含{DB}表中field names的{​​{1}}和field values

all rows - 我会抓取表格Object_List

所以在模板中我可以使用

SELECT var1, var2, var4 from table

然后对于数据,我可以使用

{% for field in Object_List.fields %}
  <th>{{ field }}</th> 
 {% endfor %}

我不确定我是否清楚地解释了它。是否有可能实现这样的目标。 主要要求是我只希望选定的字段显示在模板中而不是模型

中提到的所有字段

1 个答案:

答案 0 :(得分:5)

似乎显而易见的方法是使用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 %}