0

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

场景:用外键连接的2个类:Order--(foreign key)--> Order-approver (approver pk, fullname, title等)。Approver to Order 是一对多的关系

在订单输入表单中,我希望能够按全名选择/输入批准者(Django 应该在后台将其翻译成批准者 ID)。理想情况下,应该有一个查找表格,以便我可以从列表中按姓名选择批准人

我怎么做?我错过了什么?

4

1 回答 1

1

我认为您可以使用 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, null=True, blank=True)
    tanggalLahir = models.DateField(null=True, blank=True)
    stasiunKerja = models.ForeignKey(
        Stasiun,
        on_delete=models.SET_NULL,
        null=True,)

    
于 2021-03-12T19:05:09.517 回答