Как установить фильтры в шаблоне Django - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть пользовательский тег шаблона, который проверяет группу пользователей, но когда я использую его в качестве фильтра шаблона в шаблоне HTML, он выходит из строя повсюду.

Это мой пользовательский тег шаблона:

@register.filter(name='is_in_group')
def is_in_group(user, group_name):
    group = Group.objects.get(name=group_name)
    return True if group in user.groups.all() else False

Это первый фильтр в шаблоне, который пропускает каждого пользователя (даже пользователей вне этих групп):

{% if request.user|is_in_group:"food bev supervisor"  or "casino supervisor" or "security supervisor" or "cage supervisor" %}

Но если я изменю порядок на:

{% if request.user|is_in_group:"casino supervisor" or "food bev supervisor" or "security supervisor" or "cage supervisor" %}

... код не работает (пропускает пользователей).

Если я задаю только одну группу как таковую:

{% if request.user|is_in_group:"food bev supervisor" %}

, тогда фильтр работает правильно (но я не могу установить более одной группы).

Это ошибка в Django?Как лучше всего обойти это?

1 Ответ

0 голосов
/ 26 сентября 2019

Мне удалось решить эту проблему, применив фильтр к каждой переменной следующим образом:

{% if request.user|is_in_group:"food bev supervisor" or request.user|is_in_group:"casino supervisor" or request.user|is_in_group:"security supervisor" or request.user|is_in_group:"cage supervisor" %}

Это не красиво и не Pythonic, но, по крайней мере, это работает.Соглашение о Джанго здесь немного странное, но, попробовав много разных способов, я считаю, что это правильный путь.

...