JD Yang
JD Yang

Reputation: 371

django overriding default error message in model form or field

Change Every field message is redundancy, so I make the new wrapper

class CharFieldWrapper(forms.CharField):     

    def __init__(self, *args, **kwargs):
        super(CharFieldWrapper, self).__init__(*args, **kwargs)  
        self.error_messages = {'required' : 'XXXX: YOU SHOULD PUT SOMETHING!' }     

Yeah, This does not work.

Is anybody knows how make wrapper class of field or form to change error_messages?

Thank you.

Upvotes: 1

Views: 451

Answers (2)

Aamir Rind
Aamir Rind

Reputation: 39659

There is a problem with your init method:

class CharFieldWrapper(forms.CharField):

    def __init__(self, *args, **kwargs):
        super(CharFieldWrapper, self).__init__(*args, **kwargs)
        self.error_messages['required'] = 'XXXX: YOU SHOULD PUT SOMETHING!'

Also while doing self.error_messages = {'required': 'my error msg'} You are completely overwriting error_messages which is not good as there might be some other validation errors also. You should update the self.error_messages dict not overwrite it as I did.

Upvotes: 1

sneawo
sneawo

Reputation: 3631

Try to pass them as parameter:

class CharFieldWrapper(forms.CharField):

   def init(self, *args, **kwargs):
       kwargs['error_messages'] = {'required' : 'XXXX: YOU SHOULD PUT SOMETHING!' }
       super(CharFieldWrapper, self).init(*args, **kwargs)       

Upvotes: 2

Related Questions