Как сделать Django выбрать SQL или заявление? - PullRequest
0 голосов
/ 07 августа 2011

Я не спрашиваю о том, как сделать сырой sql. Я думаю больше о терминах набора запросов django. Если я хочу выполнить SQL как

select * from table where id="1" or id="2" or id="3";

как бы я это сделал, используя API-интерфейс django queryset? Я знаю, что если вы объедините фильтры в цепочку, вы можете получить AND. Но как бы ты сделал ИЛИ?

Кстати, насколько эффективен API-интерфейс queryset по сравнению с raw sql, как правило, то же самое?

Ответы [ 2 ]

2 голосов
/ 07 августа 2011

Я изменил ваш SQL для чтения (эквивалентный оператор)

SELECT * FROM table WHERE id IN ("1","2","3") 

^ Оператор IN позволяет нам делать операции OR без использования OR.

Table.objects.filter(id__in=["1", "2", "3"])

Cite: Как динамически создать фильтр запросов OR в Django?

2 голосов
/ 07 августа 2011

Ваш запрос такой же, как select * from table where id in ('1', '2', '3');, который с использованием набора запросов Django будет: YourModel.objects.filter(id__in=['1', '3', '4']).

...