Python 寻找两个不同模型的两个查询集的交集

Python 寻找两个不同模型的两个查询集的交集,python,django,django-rest-framework,Python,Django,Django Rest Framework,我的models.py看起来像 class RelevanceRelation(TimeStampable, SoftDeletable, models.Model): relevance_type = models.ForeignKey( RelevanceType, on_delete=models.CASCADE, related_name="relevance_relations" ) name = models.C

我的models.py看起来像

class RelevanceRelation(TimeStampable, SoftDeletable, models.Model):
    relevance_type = models.ForeignKey(
        RelevanceType,
        on_delete=models.CASCADE,
        related_name="relevance_relations"
    )
    name = models.CharField(max_length=256,
                            verbose_name="Relevance Relation Name")

    def __str__(self):
        return self.name


class RelevanceRelationValue(TimeStampable, SoftDeletable, models.Model):
    entity = models.ForeignKey(
        Entity, on_delete=models.CASCADE,
        related_name="relevance_relation_values"
    )
    relevance_relation = models.ForeignKey(
        RelevanceRelation,
        on_delete=models.CASCADE,
        related_name="values"
    )
    name = models.CharField(max_length=256,
                             verbose_name="Relevance Relation Value")

    def __str__(self):
        return self.name

我有两个查询集

q1 = RelevanceRelationValue.objects.filter(entity=<int>)
q2 = RelevanceRelation.objects.filter(relevance_type=<int>)

您可以执行额外的筛选:

q1 = RelevanceRelationValue.objects.filter(entity=some_value1).values('relevance_relation')
q2 = RelevanceRelation.objects.filter(
    relevance_type=some_value2,
    id__in=q1
)
q1=RelevanceRelationValue.objects.filter(实体=some\u value1.values('relevance\u relation'))
q2=RelevanceRelation.objects.filter(
相关性类型=某些值2,
id_uuuin=q1
)
但更合理的做法是简单地过滤相关模型,因此:

RelevanceRelation.objects.filter(
    values__entity=some_value1,
    relevance_type=some_value2
).distinct()
RelevanceRelation.objects.filter(
值\u实体=某些\u值1,
相关性类型=某些值2
).distinct()

因此,这里我们得到所有的
相关性
s,其中
相关性类型
一些值2
,对于一个相关的
RelevanceRelationValue
存在于
entity=some\u value1

我得到了一个错误
原始异常文本是:“RelevanceRelation”对象没有属性“entity\u type”。
@Jack:没错,
relevancerelationation
确实没有属性
.entity\u type
,因此,在您的代码中,您很可能希望获得给定模型不存在的属性。哦,是的,我打错了serialiser,谢谢您的帮助
RelevanceRelation.objects.filter(
    values__entity=some_value1,
    relevance_type=some_value2
).distinct()