2012-04-13 128 views
0

我正在使用類從django.contrib.auth.models製作django應用程序。Django/ManyToMany字段中的用戶訪問

我已經定義了一個模型,稱爲與用戶的M2M關係。我很難檢索給定用戶所屬的組。

這裏的定義:

class group(models.Model): 
    user = models.ForeignKey(User,related_name = 'owner') # the owner 
    name = models.CharField(max_length=100) # name of the group 

    # members of the group 
    members = models.ManyToManyField(User,related_name = 'member') 

    def __unicode__(self): 
     return str(self.name) 

我想檢索該用戶所屬的組的成員領域組。

這是失敗的命令,試圖檢索特定用戶所屬的組 - 我不知道爲什麼 - 你能讓我知道嗎? (userUser實例)

user_groups = user.group_set.all() 

我得到的錯誤是:

'User' object has no attribute 'group_set' 

有什麼不對嗎?

SOLUTION

我終於找到了解決辦法。我不得不做出與related_name查詢,所以在這裏它是:

groups_member = user.member.all() 

回答

4

因爲很多一對多的關係是通過members屬性,此屬性有related_name屬性,正確的語法是:

user_groups = user.member.all() 

(如果沒有相關的name屬性,這將是user_groups = user.members_set.all()

和反向關係是:

group_users = group.members.all() 
+0

作品 - 謝謝! – mikolune 2012-04-13 22:19:22

+2

好吧,記得檢查答案作爲解決方案。 – danihp 2012-04-13 22:42:49