У меня есть simple_tag
, который я использую для передачи переменных в метод модели, просмотра представления и фильтрации результатов в шаблоне:
Тег шаблона:
@register.simple_tag
def get_display_fields(obj, excluded_fields, adminonly_fields):
if hasattr(obj, 'get_display_fields'):
return obj.get_display_fields(excluded_fields, adminonly_fields)
return []
Модель:
class MyModel(models.Model):
def get_display_fields(self, excluded_fields=[], adminonly_fields=[])
...
Представление:
class CustomListView(ListView):
excluded_fields = ['field1',]
adminonly_fields = ['field2',]
def get_context_data(self, **kwargs):
context = super(ListView, self).get_context_data(**kwargs)
context['excluded_fields'] = self.excluded_fields
context['adminonly_fields'] = self.adminonly_fields
Шаблон:
{% for obj in object_list %}
{% get_display_fields obj excluded_fields adminonly_fields as display_fields %}
{{ display_fields.excluded_fields }}
{{ display_fields.adminonly_fields }}
{% endfor %}
Однако, похоже, что вторая переменная не передается методу модели (так как отображает None
для display_fields.adminonly_fields
).
Где я иду не так?