부모 모델이 있습니다.
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
이 모델은 Vendor, Client, Employee 모델을 만들기 위해 상속합니다. 이제 관리자 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()
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다