2010-05-21 188 views
4

我有一些車型設置是這樣的:Django的:查詢跨越多個許多一對多的關係

class AppGroup(models.Model): 
    users = models.ManyToManyField(User) 

class Notification(models.Model): 
    groups_to_notify = models.ManyToManyField(AppGroup) 

用戶對象來自Django的認證系統。

現在,我正在嘗試獲取與當前用戶所屬的組相關的所有通知。我曾嘗試..

notifications = Notification.objects.filter(groups_to_notify=AppGroup.objects.filter(users=request.user)) 

但是,這給出了一個錯誤:

more than one row returned by a subquery used as an expression

我估計是因爲groups_to_notify的檢查,對幾組。

如何根據用戶所屬的組來抓取所有通知?

回答

6

使用雙下劃線格式來遍歷關係。

Notification.objects.filter(groups_to_notify__users=request.user) 
+0

謝謝!在我看來,我在某個時候嘗試過,並沒有奏效。它現在雖然工作! – Brant 2010-05-21 17:00:11