2010-03-20 78 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

相关问题