我有一个用于管理用户的表单,一个ModelForm类型。但对于两个字段,我需要一个RegexField来验证我的数据。因此,我需要覆盖这些字段。但是现在当我在编辑模式下打开表单时(发送用户的实例时),我在两个字段中都没有加载数据。怎么避免呢?我应该忘记正则表达式字段并为它们创建一个干净的方法吗?
class UserForm(forms.ModelForm):
pid = forms.RegexField(regex=r'^\d{11}', max_length=11 ,widget=forms.TextInput(attrs=dict(attrs_dict, maxlength=50)), error_messages=my_default_errors)
code = forms.RegexField(regex=r'^\d{2}[-]\d{3}', max_length=6, widget=forms.TextInput(attrs=attrs_dict), label="Postal code", error_messages=my_default_errors)
class Meta:
model = UserProfile
exclude = ( 'user', 'image', 'pid' , 'code')
模特:
class UserProfile(models.Model):
def upload_path(self, field_attname):
filename = hashlib.md5(field_attname).hexdigest()[:4] + "_" + field_attname
return settings.MEDIA_ROOT + "/uploads/users/%s" % (filename,)
first_name = models.CharField("Name", max_length=50, blank=True, null=True)
last_name = models.CharField("Last name", max_length=50, blank=True, null=True)
pid = models.CharField("PESEL", max_length=11, blank=True, null=True)
street = models.CharField("Street", max_length=50, blank=True, null=True)
number = models.CharField("Flat/house number", max_length=10, blank=True, null=True)
code = models.CharField("Zip ", max_length=6, blank=True, null=True)
city = models.CharField("City", max_length=50, blank=True, null=True)
user = models.ForeignKey(User, unique=True, related_name='profile')
image = models.ImageField(upload_to=upload_path, verbose_name="Image", blank=True, null=True)
答案 0 :(得分:0)
您设置了新的字段类型,这是正确的,但是您将其排除在处理模型之外,而不是。从Meta.exclude
。