如何在django中自动填充字段

时间:2016-06-07 02:49:17

标签: 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.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_doctor填充name_doctor + last_doctor的串联?

2 个答案:

答案 0 :(得分:2)

答案是:不要打扰。

每当您可以根据表格中的一个或多个字段的内容生成某些数据项时,您无需为其创建另一个字段。而name_doctor + last_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)

答案 1 :(得分:0)

已解决 ,我刚刚在我的post.save上添加了这个帖子在我的视图。我的views.py

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