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

时间:2016-09-13 13:58:27

标签: django django-filter django-filters

这样可行:

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)

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

无关

1 个答案:

答案 0 :(得分:2)

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

请告诉我creator=owner moderated=False

的实例项目的所有对象

(或者这里很重要)

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

请告诉我creator=owner AND moderated=False

的所有物品项目