Как получить доступ к одному полю при использовании For Loop для итерации по всем полям ModelForm в Django Template?

У меня есть модель, которая имеет четыре поля ForeignKey, поэтому они являются выпадающими полями в форме.

class Package(models.Model):
    patient=models.ForeignKey(Patient, on_delete=CASCADE)
    diagnosis=models.ForeignKey(Diagnosis, on_delete=CASCADE)
    treatment=models.ForeignKey(Treatment, on_delete=CASCADE)
    patient_type=models.ForeignKey(PatientType, on_delete=CASCADE)
    date_of_admission=models.DateField(default=None)
    max_fractions=models.IntegerField(default=None)
    total_package=models.DecimalField(max_digits=10, decimal_places=2)

The forms.py:

class PackageForm(ModelForm):
    class Meta:
        model=Package
        fields='__all__'
        widgets={
           "patient_type" : forms.Select(attrs={"onblur":"mf();"}),
           "max_fractions" : forms.NumberInput(attrs={"onfocus":"mf();", "onblur":"tp();"}),
           "total_package" : forms.NumberInput(attrs={"onfocus":"tp();", "onblur":"onLoad();"}),
           'date_of_admission': DateInput(attrs={'type': 'date'}),

Виды.py:

def package_view(request):
    if request.method=='POST':
        fm_package=PackageForm(request.POST, prefix='package_form')
        if fm_package.is_valid():
            package=fm_package.save()
            IpdReport.objects.create(patient=package.patient, package=package)
            fm_package=PackageForm(prefix='package_form')
        return render (request, 'account/package.html', {'form5':fm_package})
    else:
        fm_package=PackageForm(prefix='package_form')
        return render (request, 'account/package.html', {'form5':fm_package})

Шаблон:

<form action="" method="post" novalidate>
        {% csrf_token %}
        {{form5.non_field_errors}}
        {% for fm in form5 %}
        <div>
            {{fm.label_tag}}
            {{fm}}
            <span>{{fm.errors|striptags}}</span><br><br>
        </div>
        {% endfor %}
        <button type="submit" id="savebtn">Save</button>
    </form>

Теперь я хочу вставить Anchor Tag рядом со всеми полями foreign_key в шаблоне, чтобы добавить новый объект в исходную таблицу. Например, опция Add Patient рядом с выпадающим полем Patient, при нажатии на которую будет появляться новое небольшое окно с формой Patient. Пользователь вводит данные нового пациента, сохраняет их, и то же имя появляется в выпадающем списке.

Но поскольку я использую цикл For Loop в шаблоне, как я смогу получить доступ к этим полям внешнего ключа и применить опции? Есть предложения, пожалуйста?

Если это не проблема, я бы отказался от рендеринга всех полей с помощью 'forloop'. Вместо этого я бы использовал нотацию: form.field для отображения различных полей. Таким образом, это выглядело бы так:

{{ form.patient.label_tag }}
{{ form.patient }}

Так будет намного проще перемещаться по полям, но, конечно, потребуется больше печатать :)

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