很抱歉,如果这是重复的,但是我找不到其他任何可以解决此问题的SO帖子。我有这样的模型:

class Person(models.Model):
    pass

class Interest(models.Model):
    person = models.ForeignKey(Person, related_name='interests')
    is_cool = models.BooleanField()


我知道我可以找到所有有很强兴趣的人,就像这样:

Person.objects.filter(interests__is_cool=True)


但是,我真正想要的是仅在获得Person对象时才获得他们的酷兴趣。我知道我总是可以选择相关的查询集并对其进行操作,如下所示:

interests = person.interests.filter(is_cool=True)


但由于关系是反向的,因此我无法将其分配回个人实例。总而言之,目标是直接使用ORM过滤在Interest查询集中返回的person.interests对象。

最佳答案

一种可能性是在模型上定义方法或属性:

def cool_interests(self):
    return self.interests.filter(is_cool=True)

关于python - Django ORM-筛选器相关对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50765946/

10-12 20:26