On 11/1/05, Clint Ecker <[EMAIL PROTECTED]> wrote:
> In my view, I do something similar to the following (instantate a new
> Person, fill in the information from a form, and try to save it). When
> someone enters a forumsname that's already in the database, I'd like to
> catch that, and act appropriately. So initially, I didn't have a try/catch
> block so I could see what the exception was. It told me that it would be
> throwing an "IntegrityError" so I modified my code to look like this:
> [...]
> When I try the above code, I get the following error:
> NameError: global name 'IntegrityError' is not defined
Two things here:
First, you're getting "global name 'IntegrityError' is not defined"
because IntegrityError isn't in the local namespace when you're
catching it. You'll need to import it -- probably from psycopg:
from psycopg import IntegrityError
Second, it's bad practice to wrap save() in try/except. The save()
methods don't perform validation -- they expect data to be valid
already. Use a manipulator to validate your data. (A manipulator
encapulates validation and form display.) See the docs here:
http://www.djangoproject.com/documentation/forms/#custom-forms-and-manipulators
Adrian
--
Adrian Holovaty
holovaty.com | djangoproject.com | chicagocrime.org