views.py


from django.urls import reverse_lazy
from django.views.generic import (
    ListView,
    DetailView,
    CreateView,
    TemplateView,
    UpdateView,
    DeleteView
)
# models
from .models import Empleado
# forms
from .forms import EmpleadoForm

class EmpleadoUpdateView(UpdateView):
    template_name = "persona/update.html"
    model = Empleado
    #fields =('__all__')
    fields = [
        'first_name',
        'last_name',
        'job',
        'departamento',
        'habilidades',
    ]
    success_url = reverse_lazy('persona_app:emplados_admin')

urls.py

from django.contrib import admin
from django.urls import path

from . import views

app_name = "persona_app"

urlpatterns = [
    path(
        'update-empleado/<pk>/',
        views.EmpleadoUpdateView.as_view(),
        name='modificar_empleado'
    ),
]

templates/persona/update.html


<div class="grid-container">
    <div class="grid-x">
        <h1 class="cell">
            Modificar Empleado
        </h1>
        <div class="cell">
            <form class="grid-x grid-margin-x" method="POST">{% csrf_token %}
                <div class="cell large-6">
                    <label>Nombres:
                        {{ form.first_name }}
                    </label>
                </div>
                <div class="cell large-6">
                    <label>Apellidos:
                        {{ form.last_name }}
                    </label>
                </div>
                <div class="cell large-6">
                    <label>Trabajo:
                        {{ form.job }}
                    </label>
                </div>
                <div class="cell large-6">
                    <label>Area:
                        {{ form.departamento }}
                    </label>
                </div>
                <div class="cell large-6">
                    <label>Habilidades extra:
                        {{ form.habilidades }}
                    </label>
                </div>
                <div class="cell">
                    <button type="submit" class="success button">Guardar</button>
                </div>
            </form> 
        </div>
    </div>
</div>



METHODS tambien se usa en el createview

METHOD POST Y METHOD FORMVALID

views.py

class EmpleadoUpdateView(UpdateView):
    template_name = "persona/update.html"
    model = Empleado
    fields = [
        'first_name',
        'last_name',
        'job',
        'departamento',
        'habilidades',
    ]
    success_url = reverse_lazy('persona_app:emplados_admin')

    def post(self, request, *args, **kwargs):
        self.object = self.get_object()
        print('************METODO POST****************')
        print('=====================')
        print(request.POST)
        print(request.POST['last_name'])
        return super().post(request, *args, **kwargs)
    

    def form_valid(self, form):
        #logica del proceso
        print('************METODO form valid****************')
        print('****************************')
        return super(EmpleadoUpdateView, self).form_valid(form)