Django шаблон сравнивает результат templatetag с переменной?
У меня есть шаблонный тег, который возвращает выбранное (ранее) название местоположения магазина:
@register.simple_tag( takes_context=True)
def getSelectedLocation(context):
request = context['request']
locationId = request.session.get('locationId')
if (locationId):
location = Location.objects.get(id = locationId)
else:
location = Location.objects.first()
return location.locationName
а в моем шаблоне я хочу сравнить его с реальными переменными:
{%for eq in obj.equipment.all %}
{%if getSelectedLocation != 'eq.storageLocation.locationName' %}
something
{%endif%}
{%endfor%}
(в целом, шаблонный тег работает нормально, т.е. если вызывается как {% getSelectedLocation %} возвращает правильное имя). Но сравнение не работает. Возможно ли это сделать таким образом? Я думаю, что не могу перенести эту логику в представление, так как она перечисляет значения внешних ключей объектов obj...
Есть предложения?
Это имеет смысл, поскольку здесь он не будет оценивать тег шаблона, он просто будет искать переменную с именем getSelectedLocation
, а ее нет, отсюда и проблема.
Вы можете сохранить результат в переменной, например:
{% getSelectedLocation as selectedLocation %}
{%for eq in obj.equipment.all %}
{%if selectedLocation != 'eq.storageLocation.locationName' %}
something
{%endif%}
{%endfor%}