带有值列表的Django过滤器
我确定这是一个微不足道的操作,但我无法弄清楚它是如何完成的......我如何为值列表创建一个django查询。
有一些比这更聪明的东西:
ids = [1, 3, 6, 7, 9]
for id in ids:
MyModel.objects.filter( pk=id )
我期待着让他们在一个节目中看到像这样的东西:
ids = [1, 3, 6, 7, 9]
MyModel.objects.filter( pk=ids )
从Django文档:
Blog.objects.filter(pk__in=[1, 4, 7])
当你有项目列表,你想检查列表中可能的值,那么你不能使用=
。
SQL查询将像SELECT * FROM mytable WHERE ids=[1, 3, 6, 7, 9]
,这是不正确的。 你必须in
运算符中使用这个,这样你的查询就像SELECT * FROM mytable WHERE ids in (1, 3, 6, 7, 9)
那个Django的( __in
SELECT * FROM mytable WHERE ids in (1, 3, 6, 7, 9)
提供了__in
运算符。
从Django文档:
Blog.objects.in_bulk([1])
{1: <Blog: Beatles Blog>}
Blog.objects.in_bulk([1, 2])
{1: <Blog: Beatles Blog>, 2: <Blog: Cheddar Talk>}
Blog.objects.in_bulk([])
{}
Blog.objects.in_bulk()
{1: <Blog: Beatles Blog>, 2: <Blog: Cheddar Talk>, 3: <Blog: Django Weblog>}
Blog.objects.in_bulk(['beatles_blog'], field_name='slug')
{'beatles_blog': <Blog: Beatles Blog>}
链接地址: http://www.djcxy.com/p/38715.html
上一篇: django filter with list of values
下一篇: Fastest way to get the first object from a queryset in django?