El form valid se ingresa cuando los datos que se han ingresado en el formulario son validos y correctos
se usa cuando se requiera haer alguna accion adespues del guardado de datos
views.py
class EmpleadoCreateView(CreateView):
template_name = "persona/add.html"
model = Empleado
form_class = EmpleadoForm
success_url = reverse_lazy('persona_app:emplados_admin')
def form_valid(self, form):
#logica del proceso
empleado = form.save(commit=False) # guardado en la bd
empleado.full_name = empleado.first_name + ' ' + empleado.last_name
empleado.save() #guarda los cambios realizados creando el full_name
return super(EmpleadoCreateView, self).form_valid(form)
forms.py
from django import forms
from .models import Empleado
class EmpleadoForm(forms.ModelForm):
class Meta:
model = Empleado
fields = (
'first_name',
'last_name',
'job',
'departamento',
'avatar',
'habilidades',
)
widgets = {
'habilidades': forms.CheckboxSelectMultiple()
}
urls.py
from django.contrib import admin
from django.urls import path
from . import views
app_name = "persona_app"
urlpatterns = [
path(
'add-empleado/',
views.EmpleadoCreateView.as_view(),
name='empleado_add'
),
]
templates/persona/add.html
<div class="grid-container">
<div class="grid-x">
<h1 class="cell">Registrar empelado</h1>
<form class="cell grid-x grid-margin-x" method="POST" enctype="multipart/form-data">{% csrf_token %}
<div class="medium-6 cell">
<label>Nombres:
{{form.first_name}}
</label>
</div>
<div class="medium-6 cell">
<label>Apellidos:
{{form.last_name}}
</label>
</div>
<div class="medium-6 cell">
<label>Trabajo:
{{form.job}}
</label>
</div>
<div class="medium-12 cell">
<button type="submit" class="button success">Guardar</button>
</div>
</form>
</div>
</div>
templates/persona/success.html
<h1>Felicitaciones, se guardo correctamenet el empleado</h1>

Última modificación: 05 Aug 2023 20:23
No hay comentarios aún
Sé el primero en comentar este artículo