After looking at http://code.google.com/p/django-registration/:

forms.py
[...]
    def clean_username(self):
        """
        Validates that the username is not already in use.

        """
        if self.cleaned_data.get('username', None):
            try:
                user =
User.objects.get(username__exact=self.cleaned_data['username'])
            except User.DoesNotExist:
                return self.cleaned_data['username']
            raise forms.ValidationError(u'This username is already
taken. Please choose another.')
[...]

It seems like the right way to go... but as Tim said, it would be nice
if the framework gurus could shed some light on the subject.

-m

On May 21, 1:00 pm, Tim Chase <[EMAIL PROTECTED]> wrote:
> > What is the "general way" to add your own validation to forms under
> > the newforms framework?
>
> > Subclassing and adding in your clean_* methods? Using decorators or
> > the such around existing validation? Adding your own custom Field
> > objects and setting their "clean" methods?
>
> My understanding (easily wrong, and appreciating correction if
> so) is that they are divergent concepts, each of which serves its
> own purpose.
>
> The clean_* methods are used for *cleaning* the data.  Thus, you
> might have a textbox for a phone number.  Cleaning that might
> involve stripping it down to purely the number.  Thus, the user
> could enter "(800)555-1212" or "800-555-1212" or "800.555.1212"
> or perhaps even "800-DJANGO1".  These should be "cleaned" to
> their normalized representation of "8005551212" (or
> "8003526461").  Likewise, one might have a monitary field where
> the user might type something like "$3,141.59" in the field and
> you really want to clean it to just "3141.59".
>
> The validators associated with the model should then ensure that
> this cleaned value is also a valid value.  Perhaps you don't
> allow phone numbers with a "900" area code (usually
> pay-through-the-nose costs-per-minute associated with them).
> Perhaps you want to ensure that the phone number is "local" as
> defined by a set of given area-codes.  Or perhaps your money
> field is intended to be a cost, so you want to validate that it's
> not a negative number.
>
> However, it's also my understanding that the clean_* methods
> should also catch any validator errors.  I don't know if this
> goes on behind the covers, or if it happens automatically.
> However, that's what I undertand the distinction to be.  Perhaps
> one of the framework gurus could shed light on "the way it should
> be done"...
>
> -tim


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to