Язык шаблона Django, если тег не работает

У меня есть шаблон django с формой обновления, для приложения счетов. Я хочу позволить обновлять запись после того, как она была сохранена.
Одно из полей модели - manager, которое является внешним ключом:

class Invoice(models.Model):
    manager = models.ForeignKey(User, on_delete=models.CASCADE,null=True ,blank=True)

Проблема в том, что мне нужно отображать не id пользователя менеджера, а его/ее имя, поэтому я хочу заполнить тег select именами всех менеджеров. Я пробовал следующее:

<select id="id_manager" name="manager">
   {% for manager in managers %}
     {{ manager }} || {{ initial_manager }}
     {% if manager == initial_manager %}
          <option value="{{ manager.user.id }}" selected>{{ manager.user.first_name }}</option>
     {% else %}
          <option value="{{ manager.user.id }}">{{ manager.user.first_name }}</option>
     {% endif %}
  {% endfor %}
</select>

Это часть views.py:

managers = Profile.objects.filter(Q(role = 'manager') | Q(role = 'cfo') | Q(role = 'ceo') | Q(role = 'sec'))
projects = Project.objects.all()
form = InvoiceForm(instance = invoice)
initial_manager = invoice.manager
return render(request, "invoice/update.html", {'form': form, 'managers':managers, 'projects':projects, 'initial_manager':initial_manager})

Я добавил это, чтобы увидеть значения переменных:

{{ manager }} || {{ initial_manager }}

и я вижу, например, " 102 || 102 ", что означает, что они равны, но часть if не выполняется, она всегда переходит к части else. Неважно, что я пробовал, я пробовал передавать initial_manager как строку, сравнивать manager с " 102 " или с "102" или с 102, но ничего не работает.
. Кто-нибудь может мне помочь?

если оба значения одинаковы, но возвращается false при использовании if тогда попробуйте модифицировать код, чтобы сделать их оба плавающими, используя floatformat для вашего случая

 {% if manager|floatformat:"0" == initial_manager|floatformat:"0" %}
      <option value="{{ manager.user.id }}" selected>{{ manager.user.first_name }}</option>
 {% else %}
      <option value="{{ manager.user.id }}">{{ manager.user.first_name }}</option>
 {% endif %}

это сделает их оба float с 0 после запятой, так что это похоже на преобразование их в целое число. смотрите также

Спасибо за помощь. Я использовал stringformat вместо floatformat.

<select id="id_manager" name="manager">
   {% for manager in managers %}
   {{ manager }} || {{ initial_manager }}
   {% if manager|stringformat:'s' == initial_manager|stringformat:'s' %}
        <option value="{{ manager.user.id }}" selected>{{ manager.user.first_name }}</option>
   {% else %}
        <option value="{{ manager.user.id }}">{{ manager.user.first_name }}</option>
   {% endif %}
 {% endfor %}
</select>

Теперь это работает. Я ценю вашу помощь

Вернуться на верх