在使用 For Loop 遍历 Django 模板中 ModelForm 的所有字段时,如何访问单个字段?

How do I access a single field while using For Loop to iterate through all the fields of a ModelForm in 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)

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'}),

views.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>

现在,我想要的是在模板中的所有 foreign_key 字段旁边插入一个锚标记,以将新对象添加到原始 table 中。例如,当单击患者下拉字段旁边的添加患者选项时,一个新的小 window 将与患者表格一起显示。用户输入新患者的数据并保存,下拉列表中会显示相同的姓名。

但是当我在模板中使用 For 循环时,我如何才能访问那些外键字段并应用选项?请问有什么建议吗?

如果这不是问题,我会放弃使用 'forloop' 渲染所有字段。相反,我会使用符号:form.field 来呈现不同的字段。所以它看起来像:

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

以这种方式浏览字段应该容易得多,但当然需要更多的输入:)