0

내 장고 모델에 대한 사용자 정의 유효성 검사기를 가질 수 있으며 양식 요소가 서로 종속되어있는 양식 수준에서 유효성 검사를 수행하고 싶습니다.django modelform 유효성 검사 폼 수준에서

class MyModel(models.Model): 
    num_average = models.IntegerField(verbose_name='Number of averages', 
             default=1) 

    num_values = models.IntegerField(verbose_name='Number of values', 
            default=3) 

종속성이 num_values = num_average * 3 것이 있습니다 : 설명하기 위해, 나는 다음과 같은 모델을 가지고 말한다. 나는 이것을 자동으로 설정할 수 있지만이 목적을 위해 우리는 사용자 입력을 원한다고 가정한다. 양식이 다음과 같습니다 :

class MyForm(ModelForm): 
    class Meta: 
     model = MyModel 
     fields = ['num_average', 'num_values'] 

    def __init__(self, *args, **kwargs): 
     super(MyForm, self).__init__(*args, **kwargs) 

제출이 시작되기 전에 전체적으로 양식의 유효성을 검사 할 수있는 방법이 있습니까?

답변

2

예, form docs이 지적하기 때문에, 이런 종류의 일은 clean 방법으로 수행됩니다. 당신이 그것으로 아무것도하지 않는 경우

여담으로
class MyForm(ModelForm): 
    class Meta: 
     model = MyModel 
     fields = ['num_average', 'num_values'] 

    def clean(self): 
     data = self.cleaned_data 
     if data['num_values'] != data['num_average'] *3: 
      raise forms.ValidationError('values must be three times average') 

, 당신은 __init__를 정의해서는 안된다 수퍼 클래스 메서드를 호출하는 메서드를 재정의하는 것은 의미가 없습니다.

+0

고마워요! 그걸 완전히 놓쳤다. '__init__'에 대한 팁을 주셔서 감사합니다. 나는 그곳에 무언가를 가지고 있었지만 그것을 제거하고 이것을 정리할 것입니다. – Luca