Django: фильтр ManyToMany, соответствующий любому элементу в списке - PullRequest
1 голос
/ 25 января 2011

В модели blog У меня есть поле ManyToMany с именем permissionGroups, которое, как следует из названия, представляет собой список групп, которым разрешен доступ к чему-либо.

class blog(models.Model):    
    permissionGroups = models.ManyToManyField(groups, null=True, blank=True)
    ...

В другой модели groups У меня есть поле ManyToMany с именем allowedUsers, которое, как следует из названия, представляет собой список пользователей в этой группе.

class groups(models.Model):
    allowedUsers = models.ManyToManyField(User, null=True, blank=True)
    ...

Так что я хочу иметь возможность получить все groups, которыеcurrentUser находится внутри и соответствует любому из них permissionGroups определенного blog.

Я надеюсь, что все было ясно,

Заранее спасибо

1 Ответ

1 голос
/ 25 января 2011

Какие окончательные данные вы ищете?Список групп?Логическое «Может редактировать / не может редактировать»?

Чтобы проверить, принадлежит ли пользователь группе, которая принадлежит блогу, вы можете сделать следующее: user.groups_set.filter(blog=blog) Это эквивалентно проверке, может ли пользователь редактировать указанный блог.

Есливам нужен список блогов, которые пользователь может редактировать, вы можете сделать это: blog.objects.filter(permissiongroups__in=user.groups_set.all())

Каким-то образом думать о ваших моделях было просто умом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...