Запрос Django с использованием условия OR - PullRequest
9 голосов
/ 26 сентября 2010

Как вы запрашиваете в Django два разных значения, как показано ниже:

profile_setting = (pSetting.objects.get(module="my_mod", setting_value=1) or
                   pSetting.objects.get(module="my_mod", setting_value=0))

Ответы [ 5 ]

10 голосов
/ 26 сентября 2010

Оформить заказ на django Q -класса :

profile_setting = pSetting.objects.get(Q(module="my_mod"),\
                  Q(setting_value=1)|Q(setting_value=0))

Кроме того, чтобы улучшить свой стиль кодирования, взгляните на некоторые рекомендации по кодированию , вам лучшеНазовите вашу модель класса PSetting.

4 голосов
/ 19 октября 2010

Вы уверены, что захватываете только один объект?

Если вы пытаетесь получить набор запросов из группы объектов, все, что вам нужно сделать, это объединить в цепочку фильтры:

profile_setting = pSetting.objects.filter(module="my_mod", setting_value__in=0)
                         .filter(module="my_mod", setting_value__in=1)

Однако, поскольку все, кроме setting_value, одинаково, вы можете просто найти список или кортеж:

profile_setting = pSetting.objects.filter(module="my_mod", setting_value__in=[0,1])

(приведенное выше предложение alexdb хорошо, если и только если вы уверены, что будетеполучение только одного объекта в ответ на ваш запрос)

3 голосов
/ 26 сентября 2010

Для этой задачи существует объект Q() - смотрите здесь: Сложные запросы с объектом Q ()

Например:

profile_setting = pSetting.objects.get(
    Q(module="my_mod", setting_value=1) | Q(module="my_mod", setting_value=0)
)
1 голос
/ 26 сентября 2010
 profile_setting = pSetting.objects.get(module="my_mod",setting_value__in=[0,1])
0 голосов
/ 24 июля 2014

Для этого типа запроса проверьте эту документацию ссылка

и для вашей конкретной проблемы вы можете передать несколько объектов набора запросов (Q) для использования набора запросов |для условия ИЛИ и & для условия И в функциях get () и filter ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...