Filtering Many-to-Many relationship by Relationship field in Django

元气小坏坏 提交于 2019-11-29 00:12:16

问题


I'm trying to filter many-to-many relationship by some through Class field.

Quoting the Django documentation, i will explain my goal

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)

In this example my goal sould be filter many to many relationship and obtain only the Person who has joined some Group starting from certain date (date_joined field).

Is it possible?


回答1:


You can query across relationships with the django ORM (or in this case the reverse relationship):

person = Person.objects.filter(
    membership__group=example_group,
    membership__date_joined__gte=example_date
)


来源:https://stackoverflow.com/questions/12891302/filtering-many-to-many-relationship-by-relationship-field-in-django

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!