Внутри шаблона django я хотел бы получить имя объекта, используя объект pk. Например, учитывая, что у меня есть pk объекта из класса A
, я хотел бы сделать что-то вроде следующего:
{{ A.objects.get(pk=A_pk).name }}
Как я могу это сделать?
Внутри шаблона django я хотел бы получить имя объекта, используя объект pk. Например, учитывая, что у меня есть pk объекта из класса A
, я хотел бы сделать что-то вроде следующего:
{{ A.objects.get(pk=A_pk).name }}
Как я могу это сделать?
Из документов на Язык шаблонов Django:
Поскольку Django намеренно ограничивает объем логической обработки, доступной на языке шаблона, невозможно передать аргументы вызовам методов, доступным изнутри шаблонов. Данные должны вычисляться в представлениях, затем передаваться в шаблоны для отображения.
Итак, вы видите, вы должны рассчитать это в своем views.py:
def my_view(request, A_pk):
...
a = A.objects.get(pk=A_pk)
...
return render_to_response('myapp/mytemplate.html', {'a': a})
И в вашем шаблоне:
{{ a.name }}
{{ a.some_field }}
{{ a.some_other_field }}
Вы можете добавить свой собственный тег, если хотите. Вот так:
from django import template
register = template.Library()
@register.simple_tag
def get_obj(pk, attr):
obj = getattr(A.objects.get(pk=int(pk)), attr)
return obj
Затем загрузите тег в свой шаблон
{% load get_obj from your_module %}
и используйте его
{% get_obj "A_pk" "name" %}
Вы не можете сделать это в Django. Из документов:
Поскольку Django намеренно ограничивает объем логической обработки, доступной на языке шаблона, невозможно передать аргументы вызовам методов, доступным изнутри шаблонов. Данные должны вычисляться в представлениях, затем передаваться в шаблоны для отображения.
Непонятно, что именно вы пытаетесь выполнить, но вы должны выяснить, как вы можете достичь желаемого результата в представлении и отправить переменную или объект в шаблон.