通过Django中的Relationship字段过滤多对多关系

ale*_*rio 21 django filtering django-orm

我试图通过Class字段来过滤多对多关系.

引用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)
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我的目标应该是过滤多对多的关系,并且只获得从某个日期开始加入某个(date_joined字段).

可能吗?

Tim*_*ony 37

您可以使用django ORM 查询关系(或者在这种情况下是反向关系):

person = Person.objects.filter(
    membership__group=example_group,
    membership__date_joined__gte=example_date
)
Run Code Online (Sandbox Code Playgroud)