How pass data from template to Updateview

214 Views Asked by At

I'm very new to programming. I would like to pass data from html input to update view and then save it to my database. Tried to search for it but with no luck. Here is my html code:

        <form action="{% url 'darbai:taskasupdate' pk=taskas.pk %}" method="POST">
        {% csrf_token %}
        <input type="text" name="pavad">
        <input type="text" name="atsak">

        <button type="submit"/>Update</button>
      </form>

Here is my model:

class Taskas(models.Model):
pavadinimas = models.CharField(max_length=30, null=True, blank=True)
atsakingas = models.CharField(max_length=30, null=True, blank=True)

Here is my urls:

urlpatterns = [
path('', CreateList.as_view(), name='CreateList'), 
path('delete/<int:pk>', TaskasDeleteView.as_view(), name='taskasdelete'),
path('update/<int:pk>', TaskasUpdateView.as_view(), name='taskasupdate'),

]

Here is my view:

class TaskasUpdateView(UpdateView):
model = Taskas
form_class = TaskasForm
success_url = reverse_lazy('darbai:CreateList')
def post(self, request, **kwargs):
    self.object = self.get_object()
    request.POST['pavad'] = self.object.pavadinimas
    request.POST['atsak'] = self.object.atsakingas
1

There are 1 best solutions below

1
On

You have perfect example in the Django documantation.

So your view class in views.py:

class TaskasUpdateView(UpdateView):
    model = Taskas
    fields= ['pavadinimas', 'atsakingas']
    success_url = reverse_lazy('darbai:CreateList')

The UpdateView generates standard ModelForm for your Tasks model and take care of saving form. Your urls.py are ok. In template(it should be named tasks_update_form.html):

 <form action="{% url 'darbai:taskasupdate' pk=taskas.pk %}" method="POST">
        {% csrf_token %}
        {{ form }}
        <button type="submit"/>Update</button>
      </form>