假设我有这个模型
class Model():
var1 = models.TextField()
var2 = models.FloatField()
var3 = models.FloatField()
var4 = models.FloatField()
现在我想要一个可以用于所有模型的模板。我的要求是
- I want to display var1 , var2 , var 4 in view not var 3
- 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
- I want all the data corresponding to those vars
基本上我想要类似的东西
Object_List
其中包含 field names
和 field 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/