Передача значения для двух разных кнопок отправки в одном методе формы в Django

Рассмотрим мой template.html как

    <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>

мой url.py -

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

мой views.py имеет вид

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"))

Здесь при нажатии на кнопку submit нам нужно обновить элемент, а при нажатии на кнопку delete элемент должен быть удален. пожалуйста, помогите мне, как можно сделать обе операции submit и delete в одном представлении

Вы можете начать с обновления вашего HTML, чтобы дать кнопкам name поле:

   <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">

Теперь вы можете проверить, какая кнопка сработала. (update-item или 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"))

Обратите внимание, что я не знаю вашей логики для операции удаления элемента, поэтому вы можете обновить ее здесь.

Вернуться на верх