考虑这个示例模型:
MODEL_CHOICES = ( (u"SPAM", u"Spam"), (u"XOUP", u"Eggsoup"), )
(剪断)
type = models.CharField(max_length=4,choices=MODEL_CHOICES)
(实际的实现是特定领域的并且是非英语的,所以这个示例必须这样做。)
在构建查询时,我想按该类型字段对结果进行排序,并将结果呈现给用户。自然,我想按该字段的显示名称进行排序。
类似于以下内容:
文档 = MyModel.objects.filter(...).order_by("type")
但是,[query-set].order_by([field])
只允许按字段名称排序,这将导致 SPAM < XOUP(对机器),即使 Eggsoup < Spam(对人类阅读器)。
考虑这组按类型排序的实例:
姓名 | 类型
对象1 | 垃圾邮件
对象2 | 垃圾邮件
obj3 | 垃圾邮件
obj4 | XOUP
obj5 | XOUP
但这是用户将看到的顺序,即用户将看到显示名称,而不是类型列的内部字段值:
姓名 | 类型
对象1 | 垃圾邮件
对象2 | 垃圾邮件
obj3 | 垃圾邮件
obj4 | 蛋汤
obj5 | 蛋汤
在人类用户的眼中没有正确排序。
Django中是否有允许按显示名称排序的功能?还是一种“手动”完成此任务的方法?(重命名选项以使显示名称与实际值具有相同的顺序不是一种选择。)