如何从django中的另一个模型获取ID?

时间:2016-11-29 05:24:31

标签: python django

我有两个模型,它必须通过我的模板中的提交按钮同时输入到数据库。

这是我的第一个模特

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

第二个模型

class RiwayatSekolah(models.Model):
   SekolahID=models.AutoField(primary_key=True)
   SiswaID_FK=models.CharField(max_length=10,blank=True,null=True)

这是我的view.py

def tambah_siswa(request):
   form = datasiswa(request.POST)
   form2 = riwayatsekolah(request.POST)
   if request.method == 'POST':
       if form.is_valid() and form2.is_valid():
           form.save()
           form2.save()
           return redirect('index')
   else:
       form = datasiswa()
       form2 = riwayatsekolah()
   return render(request, 'siswa/tambah_siswa.html', {'form': form, 'form2': form2})

如何在所有表单空白的同时将SiswaID中的DataPribadiSiswa SiswaID_FK插入RiwayatSekolah

1 个答案:

答案 0 :(得分:1)

您可以使用ForeignKey字段。

class RiwayatSekolah(models.Model):
    SekolahID=models.AutoField(primary_key=True)
    SiswaID_FK=models.ForeignKey(DataPribadiSiswa)

现在您可以先尝试保存Siswa实例,然后将其添加到Sekolah实例中:

def tambah_siswa(request):
    form = datasiswa(request.POST)
    form2 = riwayatsekolah(request.POST)
    if request.method == 'POST':
        if form.is_valid() and form2.is_valid():
            siiswa_instance = form.save()
            Sekolah_instance = form2.save(commit=False)
            Sekolah_instance.SiswaID_FK = siiswa_instance
            Sekolah_instance.save()