如何为 Django 中的继承模型属性创建通用模型表单字段验证器?
How to create generic modelform field validator for inherited model attributes in django?
我有一个父模型:
class AbstractAddress(models.Model):
name = models.CharField(max_length=100,verbose_name='Name')
address1 = models.CharField(max_length=100,null=True,blank=True)
city = models.CharField(max_length=100,null=True,blank=True)
phone = models.CharField(max_length=10,null=True,blank=True)
pincode = models.IntegerField(null=True,blank=True, default=0)
class Meta:
abstract = True
我继承这个模型来创建供应商、客户、员工模型。现在在管理 ModelForm 中:
pincode = CharField(widget=TextInput(attrs={'type':'number'}),
validators=[RegexValidator(regex='^.{6}$',message='Pincode can have 6 digits')],
required=False, min_length=6)
phone = CharField(widget=TextInput(attrs={'type':'number',
'size':'10'}),
validators=[RegexValidator(regex='^.{10}$', message='Phone can have 10 digits')],
required=False, min_length=10)
我不想为上述模型的每个模型编写此代码。我怎样才能使用 DRY?
我在与 settings.py 相同的文件夹中定义了项目中的验证,并将验证方法定义为:
def validated_pincode():
pincode = CharField(widget=TextInput(attrs={'type':'number'}),
validators=[RegexValidator(regex='^.{6}$',message='Pincode can have 6 digits')],
required=False, min_length=6)
return pincode
在 modeladmin 表单中我调用了方法:
pincode = validated_pincode()
我有一个父模型:
class AbstractAddress(models.Model):
name = models.CharField(max_length=100,verbose_name='Name')
address1 = models.CharField(max_length=100,null=True,blank=True)
city = models.CharField(max_length=100,null=True,blank=True)
phone = models.CharField(max_length=10,null=True,blank=True)
pincode = models.IntegerField(null=True,blank=True, default=0)
class Meta:
abstract = True
我继承这个模型来创建供应商、客户、员工模型。现在在管理 ModelForm 中:
pincode = CharField(widget=TextInput(attrs={'type':'number'}),
validators=[RegexValidator(regex='^.{6}$',message='Pincode can have 6 digits')],
required=False, min_length=6)
phone = CharField(widget=TextInput(attrs={'type':'number',
'size':'10'}),
validators=[RegexValidator(regex='^.{10}$', message='Phone can have 10 digits')],
required=False, min_length=10)
我不想为上述模型的每个模型编写此代码。我怎样才能使用 DRY?
我在与 settings.py 相同的文件夹中定义了项目中的验证,并将验证方法定义为:
def validated_pincode():
pincode = CharField(widget=TextInput(attrs={'type':'number'}),
validators=[RegexValidator(regex='^.{6}$',message='Pincode can have 6 digits')],
required=False, min_length=6)
return pincode
在 modeladmin 表单中我调用了方法:
pincode = validated_pincode()