Django добавить файлы в шаблон не работает ожидаемым образом

Я начинающий Django и Python, и я столкнулся с проблемой при использовании Django. Я надеюсь использовать фильтр в шаблоне, чтобы получить нужную мне строку, но результат ниже не тот, который я ожидал.

# filter definition

@register.filter
def to_class_name(obj):
    return obj.__class__.__name__
# HTML template for UpdateView (This template will be used by multiple models.)
# object = Order()

{{ object|to_class_name }} #reulst: Order

{{ 'wms'|add:object|to_class_name }} #result: str, expect: object

Я примерно понимаю, что проблема заключается в порядке, но, похоже, я не могу добавить скобки, чтобы изменить его.


{{ 'wms'|add:(object|to_class_name) }} #cause SyntaxError

Есть ли способ решить эту проблему? Или есть лучший способ определить данные страницы, которые мне нужно вывести, основываясь на классе модели, когда несколько моделей используют один шаблон? Спасибо всем.

Я примерно понимаю, что проблема заключается в порядке, но, похоже, я не могу добавить скобки, чтобы изменить его.

Вы можете использовать переменные. ссылка

Один из способов - использовать тег with.

он кэширует сложную переменную под более простым именем. Переменная будет доступна до появления тега {% endwith %}.

eg.

{% with firstname="Tobias" %}
<h1>Hello {{ firstname }}, how are you?</h1>
{% endwith %}

В вашем случае что-то вроде этого

{% with class_name=object|to_class_name %}
   {{ 'wms'|add:class_name }}
{% endwith %}

Другой подход заключается в использовании тега firstof. link

{% firstof object|to_class_name as class_name %}
{{ 'wms'|add:class_name }}
Вернуться на верх