如何在django中自动填充字段

如何在django中自动填充字段,django,django-models,django-forms,Django,Django Models,Django Forms,我希望您能帮助我,我一直在尝试制作一个表单,使用同一表单上两个字段的串联来自动填充字段,但没有成功,这是我的模型和表单 class Doctor(models.Model): name_doctor = models.CharField(max_length=20) last_doctor = models.CharField(max_length=20) email_doctor = models.EmailField() p_doctor = models.C

我希望您能帮助我,我一直在尝试制作一个表单,使用同一表单上两个字段的串联来自动填充字段,但没有成功,这是我的模型和表单

class Doctor(models.Model):
    name_doctor = models.CharField(max_length=20)
    last_doctor = models.CharField(max_length=20)
    email_doctor = models.EmailField()
    p_doctor = models.CharField(max_length=10)
    id_doctor = models.CharField(max_length=30, blank=True)

    def __str__(self):
        return '%s %s' % (self.name_doctor, self.last_doctor)
我的表格:

class ADoctor(forms.ModelForm):
    class Meta:
        model = Doctor
        fields = ('name_doctor', 'last_doctor', 'email_doctor', 'p_doctor', 'id_doctor')
        labels = {
            'name_doctor': ('Name'),
            'last_doctor': ('Last name'),
            'email_doctor': ('Email'),
            'p_doctor': ('Phone'),
            'id_doctor': ('ID'),
        }

如何覆盖保存,以便在发送表单时,字段id\u doctor填充名称\u doctor+last\u doctor的串联?

答案是:不用麻烦了

只要可以根据表中一个或多个字段的内容生成某些数据项,就不需要为其创建另一个字段。你的
name\u doctor
+
last\u doctor
就是一个典型的例子

您的模型已经有一个name_doctor字段和last_doctor字段,通过将它们组合在一起来显示它们是一件小事。没有必要将其保存到数据库中,您也不应该这样做

编辑:只需向模型添加一个方法,即可生成任意自定义字段组合示例:

class Doctor(models.Model):


     def concat_fields(self):
          return self.name_doctor + self.last_doctor

     def quasi_unique_id(self):
          return self.name_doctor[0:2] + self.last_doctor[0:2] + id_order(some_other_model)
已解决,我只是在我的post.save on my view.py上的表单def之前添加了这个

post.id_doctor = form['name_doctor'].value() + form['last_doctor'].value()
                post.save()

因为这需要在客户端进行,所以可以使用JavaScript进行。否则,如果用户不需要编辑该字段,请在视图中重新创建ID字段。我这样做是因为在完成此操作后,我希望根据姓名的前两个字母和姓氏的两个字母加上一个数字生成自定义标记。我的答案仍然有效。您可以使用名称和last_doctor字段来实现这一点,但我仍然需要将其存储在模型的一个字段中,以便能够在不同的模型上使用该信息并查看以添加额外信息。您为什么这么认为?我想在另一个表单和模型上生成自定义订单id,该表单和模型采用自定义格式,但不仅使用pk,例如,jane doe=ja+do+“+”1“=jado-1。