我正在尝试通过某些到字段来过滤多对多关系。
引用Django文档,我将解释我的目标
class Person(models.Model):
name = models.CharField(max_length=128)
def __unicode__(self):
return self.name
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='Membership')
def __unicode__(self):
return self.name
class Membership(models.Model):
person = models.ForeignKey(Person)
group = models.ForeignKey(Group)
date_joined = models.DateField()
invite_reason = models.CharField(max_length=64)
在此示例中,我的目标应该是过滤多对多关系,并且只获取从某个日期开始加入某些组的人( date_joined字段< /强>)。
有可能吗?
答案 0 :(得分:34)
你可以使用django ORM query across relationships(或者在这种情况下是相反的关系):
person = Person.objects.filter(
membership__group=example_group,
membership__date_joined__gte=example_date
)
答案 1 :(得分:0)
您也可以这样做:
person = example_group.members.filter(
membership__date_joined__gte=example_date
)