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

Popular posts from this blog

ruby - Trying to change last to "x"s to 23 -

jquery - Clone last and append item to closest class -

c - Unrecognised emulation mode: elf_i386 on MinGW32 -