带有值列表的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?