微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Django 查找外键表单字段新手问题

如何解决Django 查找外键表单字段新手问题

这是一个基本问题,但出于某种原因,无论是在文档中还是在本论坛中,我似乎都无法找到直接的答案。我相信一定有一个简单的答案,但话又说回来,我是 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,)

    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。