VEERA BABU
VEERA BABU

Reputation: 119

pass value for two different submit buttons in same form methods in Django

Lets us consider my template.html as

    <form class="form-horizontal" id="adhoc-form" method="post" action="{% url 'contacts:add_item' item.id %}">
    
        {% csrf_token %}
    
        <fieldset>
            <div class="control-group">
                <label for="id_item_filename" class="control-label">Items
                <span class="text-error">*</span></label>
                <div class="controls">
                    <select placeholder="Item filename" name="item" id="id_item_filename" class="span3" required="required">
                        <option value="">---------</option>
                        {% for i in items %}
                             <option value="{{i.0}}">{{i.1}}</option>
                        {% endfor %}
                    </select>
                </div>
           </div>
        </fieldset>
        <div id="form-buttons-container" class="form-actions" style="padding-left: 0px;">
           <div class="controls">
           <input type="hidden" class="btn btn-primary btn-medium" id= 'i_id' name='i_id' value="{{data.0.id}}">
           <input type="submit" class="btn btn-primary btn-medium" value="Submit">
           <input type="submit" class="btn btn-primary btn-medium" value="Delete">
           </div>
        </div>

 </form>

my url.py is

url(r'^stock/item/add/item_name/(?P<id>\d+)/$', login_required(UpdateBarcode.as_view()), name="add_item"),

my views.py is

class UpdateItem(View):
    def post(self, request, id):
       item_id = request.POST.get('item')
       items = Items.objects.get(id=item_id)
       try:
          JobItems.objects.filter(id=id).update(item_name=items.name)
       except:
           messages.error(request, 'Cannot update')
       return redirect(reverse("contacts:item_list"))

Here when clicking the submit button we need to update item and we click delete button item should be deleted.please help me how can do both the submit and delete operations in the same view

Upvotes: 0

Views: 551

Answers (1)

black
black

Reputation: 857

You can get started with updating your HTML to give buttons name field:

   <input type="submit" class="btn btn-primary btn-medium" name="update-item" value="Submit">
   <input type="submit" class="btn btn-primary btn-medium" name="delete-item" value="Delete">

Now you can check which button is triggered. (update-item or delete-item):

def post(self, request, id):
    item_id = request.POST.get("item")
    items = Items.objects.get(id=item_id)
    if "update-item" in request.POST:
        try:
            JobItems.objects.filter(id=id).update(item_name=items.name)
        except:
            messages.error(request, "Cannot update")
    elif "delete-item" in request.POST:
        JobItems.objects.get(id=id).delete()
    return redirect(reverse("contacts:item_list"))

Note that I don't know your logic for item-delete operation so you can update here.

Upvotes: 1

Related Questions