Django 过滤器或 .filter(x=1,y=2) 就像 Django Docu

Django filter OR .filter(x=1,y=2) like Django Docu

所以这有效:

from django.db.models import Q

Item.objects.filter(Q(creator=owner) | Q(moderated=False))

根据:https://docs.djangoproject.com/en/dev/topics/db/queries/#spanning-multi-valued-relationships

这应该给我与第一个代码片段相同的代码

Item.objects.filter(creator=owner, moderated=False)

但它的作用如下:

 Item.objects.filter(creator=owner).filter(moderated=False)

编辑: 我误解了第二个和第三个片段是相同的,除非多对多字段到位。但是两者都与第一个片段无关

Q 与运营商 |可以翻译成:

请给我 creator=owner OR moderated=False

实例 Item 的所有对象

(OR 在这里很重要)

.filter(creator=owner, moderated=False) 说:

请给我实例项的所有对象 creator=owner AND moderated=False