Django中按关系字段过滤多对多关系
我正试图通过Class字段,通过some筛选多对多关系 引用Django文档,我将解释我的目标Django中按关系字段过滤多对多关系,django,filtering,django-orm,Django,Filtering,Django Orm,我正试图通过Class字段,通过some筛选多对多关系 引用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=12
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\u joined field)开始加入某个组的人
可能吗 您可以使用django ORM(或者在本例中为反向关系):
您也可以这样做:
person = example_group.members.filter(
membership__date_joined__gte=example_date
)
这比我们不能执行的
Group.objects.filter(members\uu date\u joined=…)
有点棘手,所有查询都是从模型中的显式字段进行的。多谢各位
person = example_group.members.filter(
membership__date_joined__gte=example_date
)