Django" NULLS LAST"用于创建索引

时间:2018-03-26 14:09:50

标签: python django indexing django-models null

Django 1.11及更高版本允许使用F - 表达式为查询添加nulls last选项:

queryset = Person.objects.all().order_by(F('wealth').desc(nulls_last=True))

但是,我们希望使用此功能来创建索引。模型定义中的标准Django索引:

indexes = [
        models.Index(fields=['-wealth']),
]

我尝试了以下几点:

indexes = [
        models.Index(fields=[models.F('wealth').desc(nulls_last=True)]),
]

返回AttributeError: 'OrderBy' object has no attribute 'startswith'

这可以在Django中使用F - 表达式吗?

1 个答案:

答案 0 :(得分:2)

不,不幸的是,目前不可能(Django <= 2.1)。如果查看source of models.Index,您会发现它假设参数fields包含模型名称,而没有其他内容。

作为解决方法,您可以在迁移中使用原始SQL手动创建索引。