2012-09-26 2 views
10

Django 모델의 특정 필드에 대한 자체 검증 루틴을 정의하려고합니다. 오류 메시지가 관리자 양식에 표시되기를 원하지만 자체 파이썬 코드로 엔티티를 저장하는 경우에도 동일한 유효성 검사가 필요합니다. DRY 원칙을 위반하지 않고이를 수행 할 수있는 방법이 있습니까?모델 및 관리자의 Django 필드 유효성 검사?

답변

8

개별 필드의 유효성을 검사하려면 write a validator을 입력하고 모델 필드에 추가하십시오.

모델의 full_clean 메서드가 호출 될 때마다 유효성 검사기가 필드에 대해 실행됩니다. Django 관리자를 포함하여 모델 양식이 검증 될 때마다 실행되지만 모델 인스턴스가 저장 될 때 자동으로 실행되지 않으므로 full_clean을 수동으로 Python 코드로 호출해야합니다. 당신이 모델이 저장 될 때마다 실행되도록 검증을 강제로 원하는 경우

m = MyModel(x=20) 
m.full_clean() # may raise ValidationError 
m.save() 

, 당신은 저장 메소드를 오버라이드 (override) 할 수 거기 full_clean를 호출합니다. 모델 폼과 django 관리자를 사용할 때 유효성 검사가 두 번 실행됩니다.