使用嵌套查询的 Django 过滤

Django filtering with nested queries

我有一个大致像这样的 Django 模型

class Equipment(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    name = models.CharField(max_length=100)

class Tag(models.Model):  
    id = models.UUIDField(default=uuid.uuid4, unique=True, primary_key=True)
    tag_type = models.ForeignKey(TagType)
    equipment = models.ForeignKey(Equipment)
    name = models.CharField(max_length=100)

    class Meta:
        db_table = "tag"
        ordering = ["tag_type__name", "name"]
        unique_together = (("tag_type", "equipment"),)

class TagType(models.Model):  
    id = models.PositiveSmallIntegerField(primary_key=True)
    name = models.CharField(max_length=100, unique=True)

    class Meta:
        db_table = "tag_type"
        ordering = ["name"]

TagType 的名称如 "Equipment" 和 "Load"

"Equipment" 标签可以是 "HVAC" 或 "Lighting"

"Load" 标签可以是 "Variable" 或 "Weather"

我希望能够过滤到具有特定 tag_type 标签名称的设备。

如果我想要带有 HVAC 标签和 tag_type Equipment 的设备,则以下工作: Equipment.objects.filter(tag__tag_type__name="Equipment", tag__name="HVAC")

不过,我认为在这种情况下 tag_type 名称和标签不一定来自同一个标签。 AKA tag__tag_type__name="Equipment"tag__name="HVAC" 可能没有引用正确的值。

由于可能有多种名称各不相同的标签,我想确保过滤到正确的标签。我有办法解决这个问题吗?

经过一些进一步的测试,通过将 tag__tag_type__name="Equipment"tag__name="HVAC" 链接在一起确保它确实在查看相同的标签。我的担心是多余的