В django как я могу выполнить запрос, что (fielda, и fieldb) находятся в разрешенном наборе пар (1, 2), (3, 4)?

В django как я могу выполнить запрос о том, что (fielda, и fieldb) находятся в разрешенном наборе пар (1, 2), (3, 4)? Не похоже, что это возможно с помощью filter или Q запросов. Так ли это? Или мне нужно сделать это с помощью необработанного sql-запроса?

Вы можете объединить в цепочку столько объектов Q, сколько пожелаете, чтобы создать серию условий ИЛИ вместе.

Пример, где пары уже известны:

Model.objects.filter(Q(fielda=1) & Q(fieldb=2) | Q(fielda=3) & Q(fieldb=4))

Более динамичный вариант генерации запроса из итерабельной таблицы - создать объект Q и затем обновлять его дополнительными условиями в цикле:

pairs = [(1, 2), (3, 4)]
query = Q()
for a, b in pairs:
    query |= Q(fielda=a) & Q(fieldb=b)
Model.objects.filter(query)
Вернуться на верх