很抱歉,如果这是重复的,但是我找不到其他任何可以解决此问题的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/