问题描述
这是一个基本问题,但出于某种原因,无论是在文档中还是在本论坛中,我似乎都无法找到直接的答案。我相信一定有一个简单的答案,但话又说回来,我是 Django 的新手(我非常了解 Python 和数据库)
场景: 2个与外键相连的类:Order--(foreign key)--> Order-approver(approver pk、fullname、title等)。订单审批人是一对多的关系
在订单输入表单中,我希望能够通过全名来选择/输入批准者(Django 应该在幕后将其翻译成批准者 ID)。 理想情况下,应该有一个查询表单,以便我可以从列表中按姓名选择一个审批人
我该怎么做?我错过了什么?
解决方法
我认为您可以使用 django 模型形式。 https://docs.djangoproject.com/en/3.1/topics/forms/modelforms/。使用 ModelForm,django 将自动生成适合您模型的选择表单 这是我的项目截图和源代码,例如
截图[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,blank=True)
tanggalLahir = models.DateField(null=True,blank=True)
stasiunKerja = models.ForeignKey(
Stasiun,)