Как собрать имя переменной в языке шаблонов Django?

Я пытаюсь собрать переменную в шаблоне Django таким образом:
obj.length.forloop.counter где foorloop.counter должен возвращать число.
например obj.length.1 затем obj.length.2 и так далее...

Я попробовал добавить фильтр: obj.length|add:forloop.counter но это вообще ничего не дало.
Могу ли я как-то собрать такие имена переменных в языке шаблонов django?

Вы можете зарегистрировать пользовательский фильтр (см. документацию), чтобы достичь того, что вы хотите:

@register.filter()
def get(obj, attr):
    if hasattr(obj, attr):
        return getattr(obj, attr)
    return obj[attr]

Затем вы можете использовать его в своем шаблоне следующим образом:

{{ obj.length|get:forloop.counter }}

При этом мне интересно, нельзя ли сделать прямую итерацию obj или obj.length. Вы уверены, что не можете сделать что-то подобное в своем шаблоне? Это было бы намного чище.

{% for item in obj %}
    {% comment %}Do something with item{% endcomment %}
{% endfor %}
Вернуться на верх