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%}
Вернуться на верх