如何将Django中的多个数据插入到Django表单中?

2024-09-29 17:17:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从form2向数据库中插入多行。下面是我的代码

第一个模型.py在

class DataPribadiSiswa(models.Model):
   SiswaID = models.AutoField(primary_key=True)
   WaliKelasID=models.CharField(max_length=5,blank=True,null=True)

第二个模型.py在

^{pr2}$

在视图.py在

def tambah_siswa(request):
   form = datasiswa(request.POST)
   form2 = riwayatsekolah(request.POST)
   FormSet2 = inlineformset_factory(DataPribadiSiswa, RiwayatSekolah, extra=2, fields=('SekolahID','SiswaID_FK','SekolahNama','SekolahThMasuk','SekolahThKeluar','SekolahKet'))
   if request.method == 'POST':
       if form.is_valid():
           siswa_instance = form.save()
           form2 = FormSet2(request.POST, instance=siswa_instance)
           if form2.is_valid():
               form2.save()
           return redirect('index')
   else:
       formall={}
       formall['form'] = datasiswa()
       formall['form2'] = riwayatsekolah()
   return render(request, 'siswa/tambah_siswa.html', formall)

这是我的模板

<form action="" method="post">
{% csrf_token %}
<table >
    {{ form2.management_form }}
    {{ form2.as_table }}
</table>
</form>

如何将表单2中的多行插入数据库?当我运行这段代码时,它只插入一行。在


Tags: instance代码py模型form数据库trueif
1条回答
网友
1楼 · 发布于 2024-09-29 17:17:47

要简化对相关对象的处理,可以使用Inline formsets

您可以这样实现:

from django.forms import inlineformset_factory
FormSet2 = inlineformset_factory(DataPribadiSiswa, RiwayatSekolah, extra=2) 

现在,试试这个:

^{pr2}$

在模板中:

{{ form2.management_form }}
{{ form2.as_table }}

或者

{{ form2.management_form }}    
{% for frm in form2 %}
    {{ frm.as_table }}
{% endfor %}

相关问题 更多 >

    热门问题