Login

Newforms customs validators

Author:
baptiste
Posted:
March 18, 2007
Language:
Python
Version:
Pre .96
Tags:
newforms validators
Score:
0 (after 2 ratings)

How to proceed to add a custom validator to a newforms field : you just need to create a new class derivated from forms.YourField with a custom clean method. Do not forget the line super(UserField, self).clean(value) ; in our case, it verifies the field attributes : min_length, max_length or required.

More explications (in French) : des validateurs personnalisés pour Django

1
2
3
4
5
6
7
8
class UserField(forms.CharField):
    def clean(self, value):
        super(UserField, self).clean(value)
        try:
            User.objects.get(username=value)
            raise forms.ValidationError("Someone is already using this username. Please pick an other.")
        except User.DoesNotExist:
            return value

More like this

Comments

richardbarran (on March 22, 2007):
<p>Hi,</p> <p>This snippet contains a small bug, line 3 should be: </p> <p>value = super(UserField, self).clean(value) </p> <p>Reason: </p> <p>The 'clean' method of the parent class - forms.Charfield - returns 'value' converted to a unicode string, however in the snippet this return value is ignored.</p> <p>HTH,<br/> Richard</p> <p>PS It took me a while to understand why é and ô's were causing me a problem :-)</p>

#

rahmcoff (on March 9, 2008):
<p>Lines 6 and 7 should be swapped, and line 8 should be un-indented a level.</p>

#

Please login first before commenting.