django模型 - 用manytomanyfield查询

时间:2014-05-11 20:13:03

标签: django django-models

我遇到与ManyToManyField连接的1个查询的问题。我们有2个相关模型:用户和事件。模型事件与用户有2个关系,它必须有1个组织者和任何数量或参与者 - 组织者不能参与(我跳过了负责验证的代码)。现在,作为一个例子,我想要的是我组织的活动的所有参与者。问题是以下查询只获取request.user本身,全部跳过所有参与者。有没有办法在没有任何自定义查询的情况下实现我的需求?感谢

#models.py

class User(models.Model):
    name = models.CharField(max_length=100)

class Event(models.Model):
    name = models.CharField(max_length=100)
    organiser = models.ForeignKey(User)
    participants = models.ManyToManyField(User, related_name='participants', blank=True, null=True)

#views.py

def assess_partners(request):
    users = User.objects.filter(event__organizer=request.user)
    return render(request, 'some template.html', {'users': users})

1 个答案:

答案 0 :(得分:3)

如果你使用更好的related_names,例如:

,情况会更清楚
class Event(models.Model):
    name = models.CharField(max_length=100) 
    organiser = models.ForeignKey(User, related_name='events_as_organiser')
    participants = models.ManyToManyField(User, related_name='events_as_participant', blank=True)

我想要的是我组织的活动的所有参与者

User.objects.filter(events_as_participant__organiser=request.user).distinct()