python - Change existing model data with form -
i trying implement view displays form capture data , table captured data of user. table has form 2 buttons per row, either submitting "change" or "delete" object id of object in given table row, using post.
my django view looks this:
def capturedata(request): form = myform(request.post or none) if request.method == "post": if 'delete' in request.post: # user hits "delete" button in displayed objects table. try: del_object = myobject.objects.filter(user = request.user).get(id = request.post['delete']) del_object.delete() except: # ... return redirect('capturedata') elif 'change' in request.post: # user hits "change" button in displayed objects table. ch_object = myobject.objects.filter(user = request.user).get(id = request.post['change']) form = myform(instance = ch_object) if form.is_valid(): form.save() return redirect('capturedata') else: # new data added database. if form.is_valid(): new_object = form.save(commit = false) new_object.user = request.user new_object.save() return redirect('capturedata') objects = object.objects.filter(user = request.user) context = {'form': form, 'objects': objects} return render(request, 'mytemplate.html', context)
this how mytemplate.html looks like:
{% extends "base.html" %} {% block content %} <h3>data capturing</h3> <p> <!-- first form, responsible capturing data --> <form method="post" action=""> {% csrf_token %} {{form}} <input type ='submit' value='save'/> </form> </p> <h3>captured data</h3> <table> <thead> <tr> <th>#</th> <th>name</th> <th>address</th> <th>city</th> <th colspan="2">actions</th> </tr> </thead> <tbody> {% object in objects %} <tr> <td>{{forloop.counter}}</td> <td>{{object.name}}</td> <td>{{object.address}}</td> <td>{{object.city}}</td> <!-- second form (per row), responsible submitting "delete" or "change" --> <form action="" method="post">{% csrf_token %} <td> <button type="submit" value="{{object.id}}" name="change" id="object{{object.id}}">change</button> </td> <td> <button type="submit" value="{{object.id}}" name="delete" id="object{{object.id}}">delete</button> </td> </form> </td> </tr> {% endfor %} </tbody> </table> {% endblock %}
the "delete" part works fine. problem "change" part. populates form selected objects data, when hit capture submit button runs else:
clause resulting in new data row or error, if data exists. reason obvious: new post data not contain "change" marker anymore.
how can separate elif:
part else:
part?
Comments
Post a Comment