mengu on web programming.

Updating Django Models

I'm developing one of my start-ups with Django, the most and widely used Python web framework. Currently I'm not using the form class provided by Django built-in so I'm writing my forms in html. After I have created my update form, I thought updating the posted model info like model.attribute = request.POST['attribute'] is not a good way. I have thought a second and I've found my way.

We are aware of the "get_object_or_404()" method that returns either the model or raises a 404. What this method returns is an instance of this model which means that we are able to use "setattr()" method. So this is what I have came up with:

model = get_object_or_404(Model, id=objectid)
for var in request.POST:
    setattr(model, var, request.POST[var])
model.save()

You don't have to do it like this if you are going to update 2 or 3 fields. However if you are going to update around 5+ rows, it's not genius to update them all by hand.

After I wrote this piece of code, I thought "wait a minute, I got many to many relations that comes with the update" and decided to not to operate over that field so I have changed it like this:

model = get_object_or_404(Model, id=objectid)
for var in request.POST:
    if var != 'categories':
        setattr(model, var, request.POST[var])
# other operations with categories
model.save()

This is all that I have came up with. Hope helps to somebody else. I'd like to hear your thoughts and suggestions.

Comments

No comments made for this post.

Leave a Response

No HTML allowed. You can use markdown.
Name*:
E-Mail* (not published):
Web site:
Response: