2012-04-21 4 views
2

나는 이와 같은 형태로 일부 사용자 지정 오류 메시지를 추가하려고했던에 사용자 필드에 사용자 지정 오류 메시지를 추가장고 1.4 - 메타 필드 모델과 형태 = 사용자

class RegistrationForm(forms.ModelForm): 

    class Meta: 
     model = User 
     fields = ('email',) 

    extra_field = forms.CharField(error_messages={ 
     'required':'Este campo es requerido' 
    })  

나는 정의를 추가 아무런 문제가 없다 오류 메시지를 양식 (extra_field)로 선언 된 필드에 전달했지만 모델 User에서 meta 클래스 (email)를 통해 상속 된 입력란에 사용자 지정 오류 메시지를 추가하는 데 문제가 있습니다.

정말 원하는 것은이 양식의 모든 오류 메시지를 사용자 정의하는 것입니다. 또한, 스페인어가 아닌 영어로 표시하고 싶습니다.

지금까지 모델 사용자로부터 상속 된 양식 필드를 사용자 지정하는 방법에 대한 문서를 찾지 못했지만 실제로는 오류 메시지 때문에 새로운 양식을 쓰고 싶지 않습니다.

미리 감사드립니다.

PD : 저는 debian 짜내기 상자에 Django 1.4와 Python 2.6.6을 사용하고 있습니다. 다른 사람 다르지 않다 User 당신의 settings.py

USE_I18N = True 
LANGUAGE_CODE = 'es' 

모델의 국제화에

+0

'error_messages' dict에 사용자 정의 오류를 추가하면 어떤 이점이 있습니까? 당신은 단지'raise forms.ValidationError ('중요한 메시지')' – San4ez

답변

1

여러분, 정말 고맙습니다. 답변을 주셔서 감사합니다. 나는이 양식이

Suposse :

class RegistrationForm(forms.ModelForm): 

    class Meta: 
    model = User 
    fields = ('username', 'email') 

을 그리고 사용자 이름 필드에 사용자 지정 오류 메시지를 추가 할,하지만 난 모든 느슨한하지 않으

는이 같은 문제를 해결 이 필드에는 이미 유효성 검사가 있습니다.

나는 나의 RegistrationForm 클래스에이 방법을 추가 :

def clean_username(self): 
    data = self.cleaned_data 

    # My extremely important validation. 
    if len(data['username']) == 5: 

     self.fields['username'].error_messages["myerror"] = "The important message" 
     raise forms.ValidationError(self.fields['username'].error_messages["myerror"]) 

    return data['username'] 

이 aproach의 장점은 이미 문제의 필드와 함께 제공되는 다른 유효성 검사를 느슨하게하지 않는다는 것입니다.

사용자가 내 데이터베이스에 이미 있는지 유효성을 검사 할 필요가 없기 때문에 이것은 중요합니다.

귀하의 회신에 감사드립니다. 좋은 하루 되세요 !!!

0

켭니다. 문제를 파악하기 위해 코드를 작성하십시오. 당신의 메타 클래스 fields = ('email')에서 는 튜플 또는 목록을해야합니다 즉, 당신은 당신이 당신의 추가 필드를 정의로 단순히 정확히 같은 방식으로 재정 의하여 상속 된 필드 중 하나를 대체 할 수 있습니다 fields = ('email',)

+0

안녕 San4ez, 당신의 대답에 대해 대단히 감사합니다, 나는 메타 클래스의 필드 값을 고정시키고, 국제화 문제, 그러나, 나는 여전히 돈을 코드를 해킹하지 않고 사용자의 모델 양식을 사용자 정의하는 방법을 알고 있습니다. – danielrvt

0

.

+0

이 aproach의 문제점은 해당 필드와 함께 제공되는 모든 기존 유효성 검사 규칙을 잃어 버리게된다는 것입니다. 예를 들어 필드 사용자 이름을 다시 정의한다고 가정 해 보겠습니다.수동으로 해당 사용자 이름의 고유성과 관련된 모든 유효성 검사를 제공해야합니다. – danielrvt