Modelo Empleado
models.py
class Empleado(models.Model):
""" Modelo para tabla empleado """
JOB_CHOICES = (
('0', 'CONTADOR'),
('1', 'ADMINISTRADOR'),
('2', 'ECONOMISTA'),
('3', 'OTRO'),
)
first_name = models.CharField('Nombres', max_length=60)
last_name = models.CharField('apellidos', max_length=60)
full_name = models.CharField(
'Nombres completos',
max_length=120,
blank=True
)
job = models.CharField('Teabajo', max_length=1, choices=JOB_CHOICES) #para el get_job_display
departamento = models.ForeignKey(Departamento, on_delete=models.CASCADE)
avatar = models.ImageField(upload_to='empleado', blank=True, null=True)
habilidades = models.ManyToManyField(Habilidades)
hoja_vida=RichTextField()
class Meta:
verbose_name = 'Mi Empleado'
verbose_name_plural = 'Empleados de la empresa'
ordering = ['-first_name', 'last_name']
unique_together = ('first_name', 'departamento')
def __str__(self):
return str(self.id) + '-' + self.first_name + '-' + self.last_name
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 EmpleadoDetailView(DetailView):
model = Empleado
template_name = "persona/detail_empleado.html"
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
path(
'ver-empleado/<pk>/',
views.EmpleadoDetailView.as_view(),
name='empleado_detail'
),
templates/persona/detail_empleado.html
<h1>Detalle de un empelado </h1>
{{ empleado }}
<h3>Todos los datos:</h3>
<p>{{ empleado.first_name }}</p>
<p>{{ empleado.last_name }}</p>
<p>{{ empleado.departamento }}</p>
<p>{{ empleado.habilidades }}</p>
ENVIAR UNA VARIABLE EXTRA
views.py enviar una variable extra
class EmpleadoDetailView(DetailView):
model = Empleado
template_name = "persona/detail_empleado.html"
def get_context_data(self, **kwargs):
context = super(EmpleadoDetailView, self).get_context_data(**kwargs)
#toot un proceso
context['titulo'] = 'Empleado del mes'
return context
templates/persona/detail_empleado.html
<div class="grid-container">
<div class="grid-x grid-margin-x align-center">
<div class="cell large-4 card" style="width: 300px; margin-top: 10px;">
<div class="card-divider">
<h1>Detalle de un empelado {{ titulo }}</h1>
{{ empleado }}
<div class="card-divider">
{{ empleado.get_job_display }} #solo funciona para los choises #1,contador
</div>
</div>
{% if empleado.avatar %}
<img src="{{ empleado.avatar.url }}">
{% else %}
<img src="{% static 'img/20.jpg' %}">
{% endif %}
<div class="card-section">
<h4>{{ empleado.full_name }}</h4>
<p>{{ empleado.last_name }}</p>
<p>{{ empleado.departamento.shor_name }}</p>
<p><span class="label">Habilidades:</span></p>
<ul class="vertical menu">
{% for h in empleado.habilidades.all %}
<li>{{ h.hablidad }}</li>
{% endfor %}
</ul>
</div>
</div>
</div>
</div>
Última modificación: 02 Aug 2023 01:05
No hay comentarios aún
Sé el primero en comentar este artículo