2010-03-20 81 views
0

我在我的Django應用程序中有以下模型。我如何從Team模型中找到在會員模型中接受爲True的所有User對象?我知道我需要使用Team.objects.filter(),但我不確定如何檢查accepted字段的值。如何訪問Django ManyToManyField的「through」對象?

from django.contrib.auth.models import User 
class Team(models.Model): 
    members = models.ManyToManyField(User, through="Membership") 

class Membership(models.Model): 
    user = models.ForeignKey(User) 
    team = models.ForeignKey(Team) 
    accepted = models.BooleanField(default=False) 

回答

1

團隊接受的成員:

team_42.members.filter(membership__accepted=True) 

球隊用戶alice已接受:

alice.team_set.filter(membership__accepted=True) 

我相信你想要得到的一組團隊或用戶對象,而不是一套中間Membership對象。你自己回答了這個問題,但是給出了一組Membership對象。

-1

Team.objects.filter(members__accepted__exact=True)

看看this。它有很多很棒的例子和解釋。

+0

這不起作用。我得到FieldError:無法將關鍵字'members_accepted'解析到字段中。選擇是:id,會員,會員 – Macha 2010-03-20 17:22:42

+0

@Macha:編輯我的答案。 – 2010-03-20 17:27:52

+0

仍然無法使用。 FieldError:無法將關鍵字'accepted'解析爲字段。選擇是:date_joined,email,first_name,groups,id,is_active,is_staff,is_superuser,last_login,last_name,logentry,成員資格,消息,密碼,團隊,user_permissions,用戶名 – Macha 2010-03-20 17:36:01

相關問題