Django forms template dropdown с уникальным идентификатором для каждой итерации цикла forloop

Я пытаюсь сгенерировать уникальный идентификатор для каждой итерации элемента цикла for. Генерируемый элемент представляет собой выпадающее меню, и количество его генераций зависит от количества активных инцидентов. Проблема заключается в том, что ID выпадающего меню одинаков для каждого выпадающего меню. В данном случае id="id_status" при просмотре через источник страницы браузера

Есть ли способ сгенерировать, например, id="id_status_1" для первого выпадающего списка, затем id="id_status_2" для второго и так далее?

Я пытался реализовать что-то с помощью forloop.counter, а также setAttribute("id", "uniqueIdentifier") от javascript, но уже несколько часов безуспешно ломаю голову

models.py

from django.db import models
...
...

class IncidentStatus(models.Model):
    status = models.CharField(max_length=128)

    def __str__(self):
        return self.status

forms.py:

from .models import IncidentStatus
...
...

class IncidentStatusAssigneeForm(ModelForm):
    status = forms.ModelChoiceField(queryset=IncidentStatus.objects.all().order_by('status'), empty_label='Select a Status', label='')

    class Meta:
        model = IncidentStatus
        fields = ('status',)

views.py:

from .models import IncidentStatus
from .forms import IncidentStatusAssigneeForm
...
...

def set_status(req):
    all_statuses_a = IncidentStatusAssigneeForm()
    all_incidents = Incident.objects.all
    ...
    ...
    
    context = {'all_statuses_a': all_statuses_a, 'all_incidents': all_incidents, ....}
    
    return render(req, 'incident_main/assignee.html', context)

template.html:

{% for incident in all_incidents %} 
    {{ all_statuses_a }}
{% endfor %}    

просмотр исходного результата страницы

<select name="status" required id="id_status">
  <option value="" selected>Select a Status</option>

  <option value="9">Acknowledged</option>

  <option value="12">General status update</option>

  <option value="2">In Progress (assessment and diagnostics)</option>

  <option value="10">In Progress (repairs/remedial action)</option>

  <option value="3">Pending (awaiting feedback from requestor)</option>

  <option value="5">Pending (awaiting parts/tools)</option>

  <option value="4">Pending (call logged with service provider)</option>

  <option value="7">Resolved</option>

</select>

Приведенный выше результат будет одинаковым для всех итераций цикла for, поскольку каждый выпадающий элемент привязан к своей задаче. Как можно видеть, сгенерированный ID имеет значение id="id_status". Это значение я пытаюсь сделать уникальным для каждого выпадающего списка

Я помещу это как ответ на данный момент, поскольку это слишком длинно для комментария, а затем я удалю/откорректирую его.

Если я правильно понимаю, что вам нужно, то вам не нужен набор форм для IncidentStatus, более того, возможно, вам вообще не нужна модель IncidentStatus вообще . Похоже, что у вас есть около 10-15 различных вариантов выбора статуса, поэтому вы можете просто использовать choices в вашей модели Incident. Затем вы можете использовать formset, а именно modelformset, но не для IncidentStatus, а скорее для Incident. Тогда вам не нужно будет делать итерации, фабрика наборов форм будет создавать новую форму для каждого объекта в модели Incident, со своей собственной формой.

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