来自两个模型的 Django 查询集过滤器

Django queryset filter from two models

在我的 Django 应用程序中,我有两个模型,但我不知道如何查询 select 正确的记录。这是代码:

class tab1 (models.Model):
    id_tab1 = models.AutoField(primary_key=True)
    name = models.CharField(max_length=50)

class tab2 (models.Model):
    id_tab1 = models.ForeignKey(tab1)
    type = models.IntegerField()

我想select tab1 记录tab2.type 等于某个条件。我怎么能在 Django 中做到这一点?

your_queryset = tab1.objects.filter(tab2__type=value)

查看相关文档here 简而言之:您可以以任何一种方式跨越关系(即从外键的每一端)。 条件 在 filter() 的命名参数中指定。我上面建议的是最简单的一个(即相等),但还有很多(例如 startswith、contains 等)。请阅读here

假设您为字段 type 存储了值 1,2。下面说明了实现 type=1.

需求的一种方法
filtered_objs = tab1.objects.filter(type=1)
tab2.objects.filter( tab1__in=filtered_objs)