2014-05-11 138 views
1

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

#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}) 

回答

2

事情会更清楚,如果你用更好的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() 
+0

感谢这个,现在所有的作品都应该如此。 – klis87