Ошибка ИЛИ на фильтре Django - PullRequest
0 голосов
/ 11 мая 2018

я пытаюсь создать или на фильтр на Django

Это мой маленький пример:

products=Products.objects.values('name', 'price').all().filter(status=1|0)

Проблема в том, что не проверяют две опции (1 | 0) не получите сообщение об ошибке (products.query), проверьте только одну опцию, а не 2 опции .. !!

Пожалуйста, спасибо !!

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Хорошо использовать Q объект

manager.filter(Q(status=1) | Q(status=0))

Вам необходимо знать, что метод all() для менеджера просто делегирует get_queryset().Чтобы использовать filter(), у вас уже будет QuerySet

Вместо all(), который вызывает queryset , а затем filter, который уже вызывает набор запросов, просто выполните manager.filter()

all().filter() становится просто filter(), потому что это избыточно

Вот оно:

from django.db.models import Q

products = Product.objects.values('name','price').filter(
                 Q(status=1) | Q(status=0),
           )
0 голосов
/ 11 мая 2018

Для фильтрации с использованием ИЛИ в django вам нужен специальный класс, называемый Q. Документация о сложных поисках с объектами Q

from django.db.models import Q

products = Products.objects.values('name', 'price').filter(Q(status=1) | Q(status=0))
...