Ваша логика верна в шаблоне, но использование неверно.Вы пытаетесь проверить условие OR
и в Python / Django вам следует использовать слово or
.Также ваш фильтр должен проверить, существует ли группа, потому что вы возвращаете набор запросов в шаблон, который никогда не будет делать то, что вы хотите.Вы можете проверить мой пример ниже.
{% load groupfilter %}
{% if request.user|group:"creator" %}
<p>creator permissions</p>
{% endif %}
{% if request.user|group:"editor" or request.user|group:"creator" %}
<p>editor permissions</p>
{% endif %}
{% if request.user|group:"editor" or request.user|group:"creator" or request.user|group:"viewer"%}
<p>viewer permissions</p>
{% endif %}
То, что вы также можете сделать, это реализовать свой фильтр таким образом, чтобы он получал список имен групп и при этом вам не нужно было много "или"
from django import template
register = template.Library()
@register.filter(name='group')
def group(u, group_names):
group_names = group_names.split(',')
return u.groups.filter(name__in=group_names).exists()
{% load groupfilter %}
{% if request.user|group:"creator" %}
<p>creator permissions</p>
{% endif %}
{% if request.user|group:"editor,creator" %}
<p>editor permissions</p>
{% endif %}
{% if request.user|group:"editor,creator,viewer" %}
<p>viewer permissions</p>
{% endif %}