How to include delete function in UpdateView instead a DeleteView

296 views
Skip to first unread message

zengkeat

unread,
Aug 10, 2018, 1:06:53 PM8/10/18
to Django users
I have a UpdateView for editing a post, but instead of making a DeleteView for delete a post, i try to make UpdateView include a function to delete the post. So ,i want to edit and delete a post in UpdateView. Is that possible ?

form_valid() missing 1 required positional argument: 'pk'

views.py

class PostUpdate(LoginRequiredMixin,generic.UpdateView):
    model = PostModel
    fields = ['title','file','description']
    template_name = 'post/post_update.html'
    success_url = reverse_lazy('user_profile:profile')

    def form_valid(self, form, pk):
        if 'confirm_post' in self.request.POST:
            form.instance.user = self.request.user
        elif 'confirm_delete' in self.request.POST:
            post_delete = PostModel.objects.get(pk = id)
            post_delete.delete()
        return super(PostUpdate, self).form_valid(form)

urls.py

from django.conf.urls import url
from . import views
from django.urls import path
app_name = 'post'

urlpatterns = [
    url('user_post/', views.PostView.as_view(), name= 'user_post'),
    url('post_list/', views.PostList.as_view(), name='post_list'),
    path('<int:pk>', views.PostDetail.as_view(), name= 'post_detail'),
    path('update/<int:pk>/', views.PostUpdate.as_view(), name= 'post_update'),
]

post_update.html

{% extends 'base.html'%}
{% load bootstrap3%}
{% block content %}

  <form method="POST" enctype="multipart/form-data">
    {% csrf_token %}

    {% bootstrap_form form%}
    <input type="submit" name="confirm_post" value="Confirm">
    <input type="submit" name="confirm_delete" value="Delete">
  </form>
{% endblock %}
Message has been deleted

Melvyn Sopacua

unread,
Aug 11, 2018, 2:25:08 PM8/11/18
to django...@googlegroups.com
On vrijdag 10 augustus 2018 16:51:54 CEST zengkeat wrote:

> I have a UpdateView for editing a post, but instead of making a DeleteView
> for delete a post, i try to make UpdateView include a function to delete
> the post. So ,i want to edit and delete a post in UpdateView. Is that
> possible ? i think i missing something in my code so the code keep getting
> error.

No, you're simply not conforming to the method signature.

> form_valid() missing 1 required positional argument: 'pk'

Your form_valid method wants an argument 'pk':

> def form_valid(self, form, pk):

But Django never will give you one. What you're looking for is
self.kwargs['pk'] and the method for form_valid can only accept one argument,
which is the form.

--
Melvyn Sopacua


Reply all
Reply to author
Forward
0 new messages