📅  最后修改于: 2023-12-03 15:08:18.424000             🧑  作者: Mango
在 Django ORM 中,__in 可以帮助我们快速查询指定范围内的数据。__in 接受一个列表,将查询结果限制在这个列表范围内。
我们可以通过以下方式来使用 __in:
MyModel.objects.filter(id__in=[1, 2, 3])
上述代码使用 __in 来查询 id 在 [1, 2, 3] 中的 MyModel 对象。
我们也可以同时使用多个 __in 来查询数据:
MyModel.objects.filter(
field_a__in=[1, 2, 3],
field_b__in=["foo", "bar"]
)
以上代码可以查询 field_a 在 [1, 2, 3] 中且 field_b 在 ["foo", "bar"] 中的 MyModel 对象。
__in 也可以反向查询:
MyRelatedModel.objects.filter(mymodel__in=[1, 2, 3])
以上代码可以查询关联 MyModel 中 id 在 [1, 2, 3] 中的 MyRelatedModel 对象。
我们也可以将一个查询集作为 __in 的参数:
my_query_set = MyModel.objects.filter(id__gt=3)
MyRelatedModel.objects.filter(mymodel__in=my_query_set)
以上代码可以查询关联 MyModel 中 id 大于 3 的 MyRelatedModel 对象。
__in 可以帮助我们快速查询指定范围内的数据,是 Django ORM 中非常有用的查询方式。我们可以将多个 __in 组合使用,也可以用于反向查询关联对象。同时,__in 也可以使用查询集作为参数。