Django: Как отфильтровать Пользователей, которые принадлежат определенной группе

Я надеюсь сужать набор запроса для поля формы, которое имеет foreignkey к таблице Пользователя вниз группе, которой принадлежит пользователь.

Группы были ранее связаны мной. Модель могла бы иметь что-то как следующее:

myuser = models.ForeignKey(User)

И мой ModelForm является очень скелетом:

class MyForm(ModelForm):
    class Meta:
        model = MyModel

Таким образом, когда я инстанцирую формы, я делаю что-то вроде этого в своем views.py:

form = MyForm()

Теперь мой вопрос, как я могу взять myuser поле и отфильтровать его поэтому, только пользователи группы 'нечто' обнаруживаются.. что-то как:

form.fields["myuser"].queryset = ???

Запрос в SQL похож на это:

mysql> SELECT * from auth_user INNER JOIN auth_user_groups ON auth_user.id = auth_user_groups.user_id INNER JOIN auth_group ON auth_group.id = auth_user_groups.group_id WHERE auth_group.name = 'client';

Я хотел бы избегать использования необработанного SQL все же. Действительно ли возможно сделать так?

31
задан Sardorbek Imomaliev 14 November 2019 в 08:17
поделиться

0 ответов

Это действительно старый вопрос, но для тех, кто ищет ответ на этот вопрос (как и я), пожалуйста, знайте, что принятый ответ уже не на 100% правильный. Пользователь может принадлежать к нескольким группам, поэтому для правильной проверки того, входит ли пользователь в какую-либо группу, вы должны сделать следующее:

qs = User.objects.filter(groups__name__in=['foo'])

Конечно, если вы хотите проверить несколько групп, вы можете добавить их в список:

qs = User.objects.filter(groups__name__in=['foo', 'bar'])
16
ответ дан Martin Tschammer 27 November 2019 в 22:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: