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 -~----------~----~----~----~------~----~------~--~---