我有一个模型,它有四个 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)
表格.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>
现在,我想要的是在模板中的所有外键字段旁边插入一个锚标记,以将一个新对象添加到原始表中。例如,在“患者”下拉字段旁边的“添加患者”选项,单击时,将显示一个带有“患者”表单的新小窗口。用户输入新患者的数据并保存,下拉菜单中会显示相同的名称。
但是当我在模板中使用 For 循环时,我将如何访问这些外键字段并应用选项?请问有什么建议吗?
如果这不是问题,我将不再使用“forloop”来渲染所有字段。相反,我会使用 notation: form.field 来呈现不同的字段。所以它看起来像:
{{ form.patient.label_tag }}
{{ form.patient }}
以这种方式浏览字段应该更容易,但当然它需要更多的输入:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句