我有一个简单的模型
title = models.CharField(max_length=250)
url = models.CharField(max_length=250)
title_french = models.CharField(max_length=250)
我想通过title_french订购它,但是当它以这种方式在A-Z中订购时,所有空白值都在顶部。在空白值的情况下,我显示英文标题。
所以我获得了法国头衔的A-Z,但是在顶部有一大堆英文标题无序。
有什么建议吗?
答案 0 :(得分:1)
您是否尝试过按多个字段排序(doc):
ordering = ('title_french', 'title')
答案 1 :(得分:1)
对于你的情况,我认为你应该在你的python代码中进行排序(目前,就像它一样,在数据库中进行排序)。 imho,不可能在db中做你想做的事,至少不用手写一些sql。
所以我们的想法是在你看来做这样的事情:
your_objects = list(YourObject.objects.filter(....))
your_objects.sort(key=lambda ob: ob.title_french if ob.title_french else ob.title)
只要您对小型列表进行排序,这不应该是一个太成问题的性能问题。
答案 2 :(得分:0)
在order_by
中指定列title_french
和title
queryset.order_by('title_french', 'title')
title_french
将首先获得优先权,如果有两个条目具有相同的title_french
,那么这两个条目将按其title