我正在使用此
objects = Model.objects.values('var1', 'var2', 'var4')
IN模板我使用
{% for fieldname in object.keys %}<th>{{ fieldname }}</th>{% endfor %}
但是字段名称以任意顺序出现,如
var4---var1----var2
我希望它们看起来像我在功能中提供的
var1---var2----var4
这是可能的
答案 0 :(得分:3)
最简单的解决方案是使用values_list
,它会返回元组并相应地更改模板。
https://docs.djangoproject.com/en/1.3/ref/models/querysets/#django.db.models.query.QuerySet.values_list
如果出于某种原因,你想继续使用dict-s,并想要一个“自动化”的解决方案,你必须做很多工作:
子类Django的ValuesQuerySet
,将其命名为ex。 OrderedValuesQueryset
并更改iterator
方法以使用OrderedDict
http://docs.python.org/dev/library/collections.html#collections.OrderedDict
创建一个Queryset
子类
在它的.values
方法返回一个实例
你的OrderedValuesQuerySet
models.Manager
在get_query_set
的课程
方法使用您的自定义QuerySet
从2开始。现在您要做的事情将自动在该模型上运行。您还可以将自定义管理器设置为与objects
不同的属性,以使默认管理器保持可用。
答案 1 :(得分:0)
问题在于如何对Python字典进行排序,因为这是values()
返回的内容。根据定义,Python字典没有排序。