我遇到与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})
答案 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()