Phillip Smith
Phillip Smith

Reputation: 23

Delete record without accessing it directly

I am creating a data visualisation site in django and using the rest api for my data. Is there any way of deleting a record without accessing its url directly, as in this case it is impossible.

Something like

def employee_delete(request):
    instance = Employee.objects.get(social_security=request.POST)
    instance.delete()
    return render(request, "dashboard.html")

This only works if you have access to the console as I learned, so I tried to access the data from a form like so

def employee_delete(request):
    if request.method == "POST":
        form = delete_EmployeeForm(request.POST, request.FILES)
        if form.is_valid():
            instance = Employee.objects.get(social_security=request.POST)
            instance.delete()
            return render(request, "dashboard.html")
    else:
        form = delete_EmployeeForm()
    return render(request, "deleteemployee.html",{'form': form})

Would this work if I was able to be more specific about which piece of data I was accessing from the form? I got a typeError trying to use request.Post in that manner. That form contained a single field in 'social_security' from the Employee model.

Thanks

Upvotes: 0

Views: 26

Answers (1)

Exprator
Exprator

Reputation: 27533

def employee_delete(request):
    if request.method == "POST":
        form = delete_EmployeeForm(request.POST, request.FILES)
        if form.is_valid():
            instance = Employee.objects.get(social_security=request.POST['social_security'])
            instance.delete()
            return render(request, "dashboard.html")
    else:
        form = delete_EmployeeForm()
    return render(request, "deleteemployee.html",{'form': form})

use this in your view

Upvotes: 1

Related Questions