2013-05-22 2 views
-1

Поэтому у меня есть эти две модели:Запросы к ManyToMany поля в модели Django

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» под одной ролью. Чтобы было ясно, мне нужны значения разных команд в строчном формате. Таким образом, если два объекта игрока хранится как:

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

и оба добавлены к одному объекту Роль, скажем:

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

Я хочу написать запрос, который даст мне «Реал» и «Барселона» - результат.

Написание запроса для него является проблемой. Любая помощь, которую я могу получить?

+0

https://docs.djangoproject.com/ru/dev/topics/db/examples/many_to_many/ – themanatuf

+0

@themanatuf Я прочитал документы. Запрос, который я ищу, не указан. – user2410179

+0

@ TimmyO'Mahony Я попытался написать запрос, чтобы получить эти два значения в списке, но я не могу этого сделать. – user2410179

ответ

0

Что вам нужно:

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

Где r роль, для которой вы хотите, чтобы получить команду.

Если вы хотите получить отличные команды, просто введите результат в set().