2014-05-11 139 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