我不是在问如何做一个原始的SQL。我正在考虑更多关于django queryset api的问题。如果我想执行像
这样的sqlselect * from table where id="1" or id="2" or id="3";
我如何使用django queryset api做到这一点?我知道如果你将过滤器连在一起就可以得到AND。但是你会怎么做?
BTW与raw sql相比,queryset api的效率通常是一样的吗?
答案 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?