查询Django模型中的ManyToMany字段

时间:2013-05-22 15:36:31

标签: python database django models

所以我有这两个模型:

class Player(models.Model):
    playerName = models.CharField(max_length= 50)
    playerTeam = models.CharField(max_length=20)

class Role(models.Model):
    roleName = models.CharField(max_length= 50)
    players = models.ManyToManyField(Player)

现在,将不同的玩家存放在一个角色下很容易。我的目标是在一个角色下检索不同的'playerTeam'。为了说清楚,我希望以字符串格式表达不同团队的价值观。因此,如果两个Player对象存储为:

p = Player(playerName='Zidane', playerTeam = 'Real Madrid') 
p1 = Player(playerName='Laudrup', playerTeam = 'Barcelona')

并将两者添加到一个Role对象中,例如:

r = Role(roleName='playmaker')
r.save()
r.add(p)
r.add(p1)
r.save()

我想写一个查询,它会给我'皇家马德里'和'巴塞罗那'作为结果。

为它编写查询证明是一个挑战。我可以获得任何帮助吗?

1 个答案:

答案 0 :(得分:0)

您需要的是:

r.players.values_list('playerTeam', flat=True)

r是您希望获得团队的角色。

如果您想获得不同的团队,只需将结果放在set()