0

model.py型表單驗證是不工作...我不知道爲什麼

from django.core.exceptions import ValidationError 

def surname_validate(value): 
if value == "123": 
    raise ValidationError('is not an even number') 


class Member(models.Model): 
surname=models.CharField(max_length=50,validators=[surname_validate]) 
other_names=models.CharField(max_length=150,null=True, blank=True) 

forms.py

class MemberEditForm(forms.ModelForm): 
class Meta: 
    model=Member 

當我嘗試保存表單沒有輸入的,我得到的默認'這個字段是必需的'錯誤,所以我知道我的觀點是正確的。事情是,我的姓氏字段驗證根本不起作用,我不明白。我在這裏做錯了什麼。爲什麼不工作?這是令人沮喪的

+0

@Daniel羅斯曼 – flexxxit

+0

@Carl邁耶你能幫助我這裏請注意不要調用clean_surname函數 – flexxxit

回答

0

其實Model Validation不適用於ModelForm。如果您想要在表單中驗證surname,則必須使用其乾淨方法編寫對錶單的驗證。

所以,你的形式必須是這樣的:

class MemberEditForm(forms.ModelForm): 

    class Meta: 
     model = Member 

    surname = forms.CharField(max_length = 50, required = True, error_messages = {'my_error': 'is not an even number'}) 

    def clean_surname(self): 
     if self.cleaned_data['surname'] == '123': 
      raise ValidationError(self.fields['surname'].error_messages['my_error']) 
     return self.cleaned_data['surname'] 
+0

。它仍然不能正常工作 – flexxxit

+0

我可以看到你的觀點嗎? – 2013-01-26 16:20:07

+0

其實你的回答是真實的。但你轉過身。有一個簡單的方法來做到這一點。如果可以,請展示您的觀點。 – 2013-01-26 16:21:41

0

我終於用這個和它的工作

attrs_dict = {'class': 'required'} 

class MemberEditForm(forms.ModelForm): 

class Meta: 
    model = Member 

surname = forms.RegexField(#regex=r'^[\[email protected]+-]+$', 
    regex=r'^$',# my validation here 
    max_length=50, 
    widget=forms.TextInput(attrs=attrs_dict), 
    label=_("Surname*"), 
    error_messages={'invalid': _("Invalid Entry.")}) 

感謝

相關問題