📜  如何使用 django ornm __in - Python (1)

📅  最后修改于: 2023-12-03 15:08:18.424000             🧑  作者: Mango

如何使用 Django ORM __in

在 Django ORM 中,__in 可以帮助我们快速查询指定范围内的数据。__in 接受一个列表,将查询结果限制在这个列表范围内。

基本用法

我们可以通过以下方式来使用 __in:

MyModel.objects.filter(id__in=[1, 2, 3])

上述代码使用 __in 来查询 id 在 [1, 2, 3] 中的 MyModel 对象。

多个 __in 用法

我们也可以同时使用多个 __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 也可以使用查询集作为参数。