Django: Como usar UpdateView con django-betterforms

Siguiendo el post anterior, ahora les mostraré cómo actualizar los registros, verán que fácil es y sin morir en el intento.

Tabla de contenido

  1. Primer paso con UpdateView
  2. Modificamos el archivo urls.py
  3. Simplificando nuestro código

Primer paso con UpdateView

Como bien sabemos la clase UpdateView pide propiedades obligatorias para trabajar, pero nosotros proporcionaremos lo que ya trabajamos con CreateView. Así que en el mismo archivo views.py escribiremos una nueva clase con lo siguiente.

class EmpleadoUpdateView(UpdateView):
    model = Empleado
    form_class = EmpleadoPersonaModelForm
    template_name = 'formulario.html'
    
    def get_form_kwargs(self):
        kwargs = super(EmpleadoUpdateView, self).get_form_kwargs()

        kwargs.update(instance={
            'persona': self.object.persona,
            'empleado': self.object
        })
        return kwargs

Aquí casi está todo igual al CreateView excepto el método get_form_kwargs. Éste lo que hace es instanciar nuestro registro empleado que venga desde parámetro de url si el id es 1,2... En self.object está la instancia empleado y lo que hacemos es asignárselo por separado a cada formulario para que se vean rellenados los campos en la vista html.

Agregamos un método más... seguro que ya lo habías visto antes....