Ограничение URL-адреса для группы «аргумент типа« ManyRelatedManager »не повторяется» - PullRequest
0 голосов
/ 21 февраля 2020

Я пытаюсь ограничить определенные URL-адреса, чтобы они были доступны только определенным группам. Я добавил своего пользователя в группу staff, и у меня есть возможность проверить с помощью user_passes_test, входит ли пользователь в группу персонала. Однако, когда я go на этот URL, я получаю argument of type 'ManyRelatedManager' is not iterable

views.py

def in_staff_group(user):
    return 'Staff' in user.groups

@login_required
@user_passes_test(in_staff_group)
def my_view(request):
    return render(request=request, template_name="main/template.html", context=context)

1 Ответ

3 голосов
/ 21 февраля 2020

Вам необходимо получить доступ к Queryset на менеджере через .all, .filter или с помощью другой функции, которая возвращает Queryset.

def in_staff_group(user):
    return 'Staff' in user.groups.all()

Хотя я не думаю, что это правильно. Вам, вероятно, нужно что-то вроде:

def in_staff_group(user):
    return user.groups.filter(name_or_some_field='Staff').exists()
...