Ove*_*ked 6 django django-queryset
假设您有一个模型Entry,其中一个字段"author"指向另一个模型Author.假设此字段可以为null.
如果我运行以下QuerySet:
Entry.objects.filter(作者= X)
其中X是某个值.假设在MySQL中我在Entry上为其他一些列和author_id设置了一个复合索引,理想情况下我希望SQL在Entry模型上使用"author_id",这样它就可以使用复合索引.
事实证明,Entry.objects.filter(author = 5)可以工作,没有连接完成.但是,如果我说author = None,Django会与Author进行连接,然后添加到Where子句Author.id IS NULL.所以在这种情况下,它不能使用复合索引.
有没有办法告诉Django只检查pk,而不是按照链接?
我知道的唯一方法是在QuerySet中添加一个额外的.extra(where = ['author_id IS NULL']),但我希望.filter()中的一些魔法可以工作.
谢谢.
(对不起,我之前对此并不清楚,感谢lazerscience和Josh的回答).
这不符合预期吗?
Entry.objects.filter(author=X.id)
Run Code Online (Sandbox Code Playgroud)
您可以在外键过滤器中使用模型或模型 ID。我还无法正确检查这是否执行单独的查询,尽管我真的希望它不会。
| 归档时间: |
|
| 查看次数: |
2897 次 |
| 最近记录: |