【发布时间】:2011-01-02 03:56:21
【问题描述】:
考虑这个示例模型:
MODEL_CHOICES = ( (u"垃圾邮件", u"垃圾邮件"), (u"XOUP", u"蛋汤"), )
(截图)
type = models.CharField(max_length=4, Choices=MODEL_CHOICES)
(实际的实现是特定领域的,并且是非英语的,所以这个示例必须这样做。)
在构建查询时,我想按该类型字段对结果进行排序,并将结果呈现给用户。当然,我想按该字段的显示名称进行排序。
类似的东西:
documents = MyModel.objects.filter(...).order_by("type")
但是,[query-set].order_by([field]) 只允许按字段名称排序,这将导致 SPAM
考虑这组按类型排序的实例:
姓名 |类型
obj1 |垃圾邮件
obj2 |垃圾邮件
obj3 |垃圾邮件
obj4 | XOUP
obj5 | XOUP
但这是用户将看到的顺序,即用户将看到显示名称,而不是类型列的内部字段值:
姓名 |类型
obj1 |垃圾邮件
obj2 |垃圾邮件
obj3 |垃圾邮件
obj4 |鸡蛋汤
obj5 |鸡蛋汤
在人类用户眼中没有正确排序。
Django 中是否有允许按显示名称排序的功能?还是一种“手动”完成此任务的方法? (重命名选项以使显示名称与实际值具有相同的顺序不是一个选项。)
【问题讨论】:
标签: django sorting django-queryset