Для решения этой проблемы я использовал теги-шаблоны. Весело и мощно учиться:
- Добавлены / templatetags в тот же каталог, что и models.py
- Добавлены /templatetags/init.py
- Добавлены /templatetags/department_extras.py
Department_extras.py:
from django import template
from django.utils.safestring import mark_safe
register = template.Library()
@register.filter
def check_is_manager(member, department):
if member.departments.relationship(department).is_manager is True:
html_response = """<i class="fa fa-user-tie" title="Manager"></i>"""
else:
html_response = ""
return mark_safe(html_response)
затем в шаблоне:
{% load department_extras %}
{{member|check_is_manager:department}}
Отказ от ответственности : Если бы я использовал стандартный ORM, у меня не было бы этой проблемы, и я использую его только для визуального эффекта, а не для бизнес-логики. Если бы не тот факт, что 3 видам и другим моделям потребуется одинаковая функциональность, я бы передал дополнительный аргумент шаблону.
Мне нравятся теги-шаблоны, потому что они почти похожи на вложенные представления, которые могут выступать в качестве общих знаменателей для представлений, так что вам не нужно постоянно передавать дополнительные данные в аргументах каждого представления.