2011-02-02 3 views
1

Я не уверен, что лучший способ описать, что я делаю, прощает мой титул.Django - фильтр ManyToManyField?

У меня есть две модели, Пользователь и группа. Группа содержит поле, члены, который является ManyToManyField со ссылкой на пользователя.

Учитывая пользователя, я хочу найти все группы, к которым принадлежит этот пользователь.

Моя идея была бы сделать что-то вроде этого:

groups = Group.objects.filter(user in members) 

Что-то в этом роде. Хотя я понимаю, что это не так

Я попытался читать через эту ссылку, но не мог понять, как применять: http://docs.djangoproject.com/en/dev/topics/db/queries/#spanning-multi-valued-relationships

Благодарности

EDIT:

Фигурные его groups = Group.objects.filter (members__username = user.username)

ответ

2

Если у вас есть пользователь, и вы хотите, чтобы его группы начали запрашивать его, а не путь вокруг ;)

Вот пример:

james = User.objects.get(pk= 123) 
james_groups = james.group_set.all() 
+1

Я считаю, что это сработает, если вы установите атрибут related_name = 'groups' на ManyToManyField – XORcist

+0

@ möter: вы правы Я забыл упомянуть об этом;) –

+0

это полезно, спасибо – JPC

1

Самый краткий путь, вероятно,

groups = user1.group_set.all() 

, который дает вам QuerySet, который итерацию.

Смежные вопросы