我确信这是一个微不足道的操作,但我无法弄清楚它是如何完成的。
一定有比这更聪明的东西:
ids = [1, 3, 6, 7, 9]
for id in ids:
MyModel.objects.filter(pk=id)
我希望通过一个查询将它们全部包含在内,例如:
MyModel.objects.filter(pk=[1, 3, 6, 7, 9])
如何使用值列表过滤 Django 查询?
如果您有项目列表并且想要检查列表中的可能值,则不能使用 =
。
sql 查询将类似于 SELECT * FROM mytable WHERE ids=[1, 3, 6, 7, 9]
,这是不正确的。您必须为此使用 in
运算符,因此对于 Django 提供的 __in
运算符,您的查询将类似于 SELECT * FROM mytable WHERE ids in (1, 3, 6, 7, 9)
。
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>}
不定期副业成功案例分享
get()
,您当然会收到 ObjectDoesNotExist 错误。