Django查找外键表单字段(Newbie Question)



这是一个基本问题,但由于某种原因,我似乎无法找到一个直接的答案,无论是在文档中,还是在这个论坛。我相信一定有一个简单的答案,但话又说回来,我是Django的新手(我知道Python和数据库很好)

场景:与外键连接的2个类:Order——(外键)——>订单-审批人(审批人pk、全名、标题等)。审批人到订单是一对多关系

在订单输入表单中,我希望能够通过全名

选择/输入审批人(Django应该在后台将其转换为审批人id)。理想情况下,应该有一个查找表单,这样我就可以根据列表 的名称选择审批人。我该怎么做?我错过了什么?

我认为你可以使用django模型表单。https://docs.djangoproject.com/en/3.1/topics/forms/modelforms/。使用ModelForm, django会自动生成适合你的模型的select form这是我的项目截图和源代码,例如

截图[1]:https://i.stack.imgur.com/AtI2v.png

class FormDaftarPegawaiBaru (forms.ModelForm):
class Meta:
model = Pegawai
fields = '__all__'
labels = {'nip': '', 'nama': '', 'tempatLahir': '',
'tanggalLahir': '', 'stasiunKerja': 'Stasiun Kerja'}
widgets = {
'nip': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'NIP'}),
'nama': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Nama Lengkap'}),
'tempatLahir': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Tempat Lahir'}),
'tanggalLahir': forms.DateInput(attrs={'class': 'form-control', 'placeholder': 'Tanggal Lahir (10/28/2000)'}),
'stasiunKerja': forms.Select(attrs={'class': 'form-control', }),
}

这些是模型

class Stasiun (models.Model):
nama = models.CharField(max_length=80)
alamat = models.CharField(max_length=80)
telepon = models.CharField(max_length=80)
email = models.EmailField(max_length=80)
kepalaStasiun = models.OneToOneField(
'Pegawai',
on_delete=models.SET_NULL,
null=True, )

class Pegawai (models.Model):
nip = models.CharField(max_length=18, primary_key=True)
nama = models.CharField(max_length=80)
tempatLahir = models.CharField(max_length=80, null=True, blank=True)
tanggalLahir = models.DateField(null=True, blank=True)
stasiunKerja = models.ForeignKey(
Stasiun,
on_delete=models.SET_NULL,
null=True,)

最新更新