Formulario que no dependera directamente de un modelo
modelo departamento
models.py
from django.db import models
# Create your models here.
class Departamento(models.Model):
name = models.CharField('Nombre', max_length=50,)
shor_name = models.CharField('Nombre Corto', max_length=20, unique=True)
anulate = models.BooleanField('Anulado', default=False)
def __str__(self):
return str(self.id) + '-' + self.name + '-' + self.shor_name
views.py
from django.shortcuts import render
from django.views.generic import ListView
from django.views.generic.edit import FormView
from applications.persona.models import Empleado
from .models import Departamento
from .forms import NewDepartamentoForm
class NewDepartamentoView(FormView):
template_name = 'departamento/new_departamento.html'
form_class = NewDepartamentoForm
success_url = '/'
def form_valid(self, form):
print('******estamos en el forma vlid*******')
# creamos una instancia del modelo Departamento
depa = Departamento(
name=form.cleaned_data['departamento'], #name es el atributo de Departamento, 'departamento' es el atributo de NewDepartamentoForm
shor_name=form.cleaned_data['shorname'] #shor_name es el atributo de Departamento, 'shor_name' es el atributo de NewDepartamentoForm
)
depa.save() #guardar en la bd
nombre = form.cleaned_data['nombre'] # validando campos del modelo NewDepartamentoForm
apellido = form.cleaned_data['apellidos']
Empleado.objects.create( #creamos un registro
first_name=nombre, #first_name es el campo del modelo Empleado
last_name=apellido, #last_name es el campo del modelo Empleado
job='1', #job es el campo del modelo Empleado
departamento=depa #asignamos depa al campo departamento del modelo Empleado
)
return super(NewDepartamentoView, self).form_valid(form)
forms.py
creamos nuestro formulario
from django import forms
class NewDepartamentoForm(forms.Form):
nombre = forms.CharField(max_length=50)
apellidos = forms.CharField(max_length=50)
departamento = forms.CharField(max_length=50)
shorname = forms.CharField(max_length=20)
urls.py
from django.contrib import admin
from django.urls import path
from . import views
app_name = "departamento_app"
urlpatterns = [
path(
'new-departamento/',
views.NewDepartamentoView.as_view(),
name='nuevo_departamento'
),
]
templates/persona/add.html
<div class="grid-container">
<div class="grid-x">
<h1 class="cell">Regitrar Departamento</h1>
<form class="cell callout grid-x grid-margin-x" method="POST">{% csrf_token %}
<div class="medium-6 cell">
<label>Nombres:
{{form.nombre}}
</label>
</div>
<div class="medium-6 cell">
<label>apellidos
{{form.apellidos}}
</label>
</div>
<div class="medium-6 cell">
<label>departamento
{{form.departamento}}
</label>
</div>
<div class="medium-6 cell">
<label>shorname
{{form.shorname}}
</label>
</div>
<div class="medium-12 cell">
<button type="submit" class="button">Guardar</button>
</div>
</form>
</div>
</div>



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