django filter with list of values
I'm sure this is a trivial operation, but I can't figure out how it's done... How can I create a django query for a list of values.
There got to be something smarter than this:
ids = [1, 3, 6, 7, 9]
for id in ids:
MyModel.objects.filter( pk=id )
I'm looking to get them all in one show with something like:
ids = [1, 3, 6, 7, 9]
MyModel.objects.filter( pk=ids )
从Django文档:
Blog.objects.filter(pk__in=[1, 4, 7])
When you have list of items and you want to check the possible values from the list then you can't use =
.
The sql query will be like SELECT * FROM mytable WHERE ids=[1, 3, 6, 7, 9]
which is not true. You have to use in
operator for this so you query will be like SELECT * FROM mytable WHERE ids in (1, 3, 6, 7, 9)
for that Django provide __in
operator.
从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/38716.html
上一篇: 基于外部排名的SQLAlchemy查询结果重新排序
下一篇: 带有值列表的Django过滤器