簡體   English   中英

如何在Django中為繼承的模型屬性創建通用的modelform字段驗證器?

[英]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

我繼承該模型來創建供應商,客戶,員工模型。 現在在admin 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() 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM