[EMAIL PROTECTED] wrote:
> Here's what I've done:
> 
> if request.method == 'POST':
>         submission = request.POST.copy()
>         submission['slug'] = slugify(submission['name'])
>         form = ClubFormClass(submission)
>         if Club.objects.get(slug=submission['slug']):
>           form.errors['name'] = '<ul><li>Club is already in database</
> li></ul>'
>         if form.is_valid():
>                       form.save()
>                       return HttpResponseRedirect('/thankyou/')
>     else:
>         form = ClubFormClass()

I'd implement it as a clean_fieldname method. The fact that in the above 
you're having to mess around with errors dictionary manually for 
something this simple is a bad smell to watch out for.

form
----

def ClubForm(forms.Form):
     name = forms.CharField(...)
     ...

     def clean_name(self):
        slug = slugify(self.cleaned_data['name'])
         if Club.objects.filter(slug=slug).count():
             raise forms.ValidationError(u'Club is already in database')
        return self.cleaned_data['name']

view
----

if request.method == 'POST':
     form = ClubForm(data=request.POST)
     if form.is_valid():
         club = form.save() # Do the slugify() in your save method
         return HttpResponseRedirect(club.get_absolute_url())
else:
     form = ClubForm()

Jonathan.

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