В 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)