【问题标题】:Django look up foreign-key form field (Newbie Question)Django 查找外键表单字段(新手问题)
【发布时间】:2021-06-10 19:26:48
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: django django-models django-forms foreign-keys


    【解决方案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,)
    
        
    

    【讨论】:

      猜你喜欢
      • 2010-10-11
      • 2011-11-16
      • 1970-01-01
      • 2021-06-11
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 2010-10-11
      • 1970-01-01
      相关资源
      最近更新 更多