Django filter ИЛИ .filter(x=1,y=2) как 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)

Изменить: я неправильно понял, что 2-й и 3-й фрагменты одинаковы, если не вступают в действие поля «многие ко многим». Но оба не имеют ничего общего с первым фрагментом


person ChrisRob    schedule 13.09.2016    source источник
comment
Можете ли вы создать минимально воспроизводимый пример? первый фрагмент представляет собой условие или, которое отличается от двух других фрагментов   -  person Sayse    schedule 13.09.2016


Ответы (1)


Q с оператором | можно перевести на:

Пожалуйста, дайте мне все объекты экземпляра Item, которые creator=owner ИЛИ moderated=False

(ИЛИ здесь важно)

Когда .filter(creator=owner, moderated=False) говорит:

Пожалуйста, дайте мне все объекты Instace Item, которые creator=owner И moderated=False

person sebb    schedule 13.09.2016
comment
Спасибо, теперь я понял! - person ChrisRob; 13.09.2016