Wednesday, September 12, 2012

Model Validation with Exception Handling

Hey Guys,

Do you have any suggestions on a good way to grab error types during Model Validation? I'm not using Forms or HTML. First, here's a simplified snippet showing my current format for Model Data Validation.

my_object = MyModel(**data_dict)
try:
    my_object.full_clean()
    my_object.save()
    return SuccessJSONResponse()
except ValidationError, e:
    print e.message_dict # Testing
    # ... build some custom JSON data from the error
    return ErrorJSONResponse(json_data)

This works fine for properly validating the data and being able to print out errors. It also allows me to easily see which fields threw errors. Unfortunately, it doesn't provide me with the types of errors in a "programmatic" fashion as far as I can tell. For example, a field can fail because it's a duplicate entry or it can fail because it didn't meet the criteria of the field-type (e.g. max_length).

What I'm hoping for is there's a way I can still easily validate my data using my Model but get more specific information about the types of errors. If it's an IntegrityError then I need to build a custom response indicating which field had failed along with an "internal" (to the project) error code and a description. If it's some other specific error (for example, maybe an email address isn't a "valid" email address) then I'd like to identify the error type, field name, and display that error accordingly. Hopefully that makes sense :)

I'm not sure if I'm just over-looking something or trying to do things the hard way but I'm up for suggestions. Keep in mind that Forms + HTML are out of the question since this is an API-only application.

Thanks!
- Kurtis

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To view this discussion on the web visit https://groups.google.com/d/msg/django-users/-/7CS8sJxLHhwJ.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home


Real Estate