Nhat Minh
Nhat Minh

Reputation: 23

How to get name input type submit modelform in Django

I am facing a problem. Please help me

templates.html

<form action="" method="POST">{% csrf_token %}
    {{Form.as_p}}
    <input type="submit" name="Save" value="Save">
    <input type="submit" name="Delete" value="Delete">
</form>

view.py

Class-based views:

def post(self,request,text_id):
    try:
        text_data = Text.objects.get(pk=text_id)
        a = FormText(request.POST,instance=text_data)
    except:
        a = FormText(request.POST)

    if  request.POST.get('name') =='Delete':
        a.delete()
    else:
        try:
            a.save()
        except:
            return HttpResponse('no ok')

Upvotes: 2

Views: 52

Answers (1)

willeM_ Van Onsem
willeM_ Van Onsem

Reputation: 477804

You can add this to a button, so:

<form action="" method="POST">
    {% csrf_token %}
    {{Form.as_p}}
    <button type="submit" name="action" value="save">Save</button>
    <button type="submit" name="action" value="delete">Delete</button>
</form>

Then in your view, you can access the value of the action key:

from django.shortcuts import get_object_or_404

def post(self,request,text_id):
    item = get_object_or_404(Text, pk=text_id)
    action = request.POST.get('action')
    if action == 'delete':
        item.delete()
        # …
        pass
    elif action == 'save':
        # …
        pass
    else:
        # invalid action …
        pass

Upvotes: 2

Related Questions