假设我有这个模型
class Model():
var1 = models.TextField()
var2 = models.FloatField()
var3 = models.FloatField()
var4 = models.FloatField()
现在我想拥有一个可以用于所有模型的模板。我的要求是
- 我想在视图中显示var1,var2,var 4
- 在模板中,我不想硬编码像var1这样的字段名称, 我会做的var2,var3 桌子的标题,所以我想 喜欢从数组中获取
- 我想要与这些变量相对应的所有数据
醇>
基本上我想要像
这样的东西 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 %}
我不确定我是否清楚地解释了它。是否有可能实现这样的目标。 主要要求是我只希望选定的字段显示在模板中而不是模型
中提到的所有字段答案 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 %}