Django Order_by空白

时间:2010-08-31 12:48:16

标签: django django-views

我有一个简单的模型

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,但是在顶部有一大堆英文标题无序。

有什么建议吗?

3 个答案:

答案 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_frenchtitle
queryset.order_by('title_french', 'title')

title_french将首先获得优先权,如果有两个条目具有相同的title_french,那么这两个条目将按其title

进行排序
相关问题