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
- 表达式吗?
答案 0 :(得分:2)
不,不幸的是,目前不可能(Django <= 2.1)。如果查看source of models.Index
,您会发现它假设参数fields
包含模型名称,而没有其他内容。
作为解决方法,您可以在迁移中使用原始SQL手动创建索引。