2014-02-12 3 views
1

У меня есть модель под названием Group (не путать со встроенными группами Django) с полем ManyToMany с именем admins до django.contrib.auth.models.User. В моем шаблоне я хочу, чтобы пользователь мог удалить группу, когда она является администратором (поле admins содержит текущего пользователя). То, как я это делаю в данный момент с петлей, как это:Django template условная кнопка удаления

{% for admin in group.admins.all %} 
    {% if user == admin %}<a href="/groups/delete/{{group.id}}/">[x]</a>{% endif %} 
{% endfor %} 

Поскольку Джанго не поощряет прохождение атрибутов функций внутри шаблонов, я не могу использовать filter или get функции на admins поле. Но мне было интересно, был ли более прямой подход к решению этой проблемы, а не зацикливаться на всех админах.

+0

Почему бы вам не использовать 'is_superuser' логическое значение, доступное в модели пользователя Джанго? – karthikr

+0

Вы пробовали '{% if user в groups.admins.all%}'? –

ответ

0

Django шаблоны support the if x in list syntax (начиная с Django 1.2, в соответствии со связанной нитью). Вы сможете упростить для цикла с одним if:

{% if user in groups.admins %} 
    <a href="/groups/delete/{{group.id}}/">[x]</a> 
{% endif %}