如何做一个django选择sql或语句?

时间:2011-08-07 17:38:36

标签: python sql django django-queryset

我不是在问如何做一个原始的SQL。我正在考虑更多关于django queryset api的问题。如果我想执行像

这样的sql
select * from table where id="1" or id="2" or id="3";

我如何使用django queryset api做到这一点?我知道如果你将过滤器连在一起就可以得到AND。但是你会怎么做?

BTW与raw sql相比,queryset api的效率通常是一样的吗?

2 个答案:

答案 0 :(得分:2)

您的查询与使用Django queryset的select * from table where id in ('1', '2', '3');相同:YourModel.objects.filter(id__in=['1', '3', '4'])

答案 1 :(得分:2)

我已将SQL修改为读取(等效语句)

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

^ IN语句允许我们在不使用OR的情况下进行OR。

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

引用: How to dynamically compose an OR query filter in Django?