我正在用这个
objects = Model.objects.values('var1', 'var2', 'var4')
我使用的IN模板
{% for fieldname in object.keys %}<th>{{ fieldname }}</th>{% endfor %}
但是字段名称以任意顺序出现,例如
var4---var1----var2
我希望它们看起来像我在函数中提供的那样
var1---var2----var4
这可能吗
最佳答案
最简单的解决方案是仅使用 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开始。 - 设置要在模型中使用的自定义管理器。请参阅https://docs.djangoproject.com/en/1.3/topics/db/managers/#custom-managers
现在您尝试做的事情将在该模型上自动起作用。您还可以将自定义管理器设置为与对象
不同的属性,以保持默认管理器可用。
关于django - 如何在 Django model.object.values() 中对列字段进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6609847/