запрос с Django Orm - PullRequest
       4

запрос с Django Orm

2 голосов
/ 23 августа 2010

Мне нужно выбрать строки с Django Orm. Мне нужен эквивалент такого запроса

select * from order where (user_from = u and f1 not is null) or (user_to = u and f2 not is null)

Я пытаюсь сделать это так:

Order.objects.filter(user_from = self).exclude(f1 = None)+Order.objects.filter(user_to = self).exclude(f2 = None)

Но нет объединения в orm .. как может эта задача решаться с помощью orm? (я вижу одно решение добавить несколько полей в мою модель, но интересно его решить без добавления полей)

1 Ответ

1 голос
/ 23 августа 2010

Взгляните на Q объектов .Вы можете выполнить что-то вроде:

Order.objects.filter(
    Q(user_from = u, f1__isnull = False) | Q(user_to = u, f2__isnull = False)
)

Предупреждение: это непроверенный код.Было бы неплохо увидеть фактический сгенерированный запрос SQL и убедиться, что это действительно то, что вам нужно.

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