
Libro models.py
from pickletools import optimize
from django.db import models
from django.db.models.signals import post_save
#apps de tercero
from PIL import Image
from applications.autor.models import Autor
from .managers import LibroManager,CategoriaManager
# Create your models here.
class Categoria(models.Model):
nombre = models.CharField(max_length=30)
objects=CategoriaManager()
def __str__(self):
return str(self.id) + ' - '+ self.nombre
class Libro(models.Model):
categoria = models.ForeignKey(
Categoria,
on_delete=models.CASCADE,
)
autores = models.ManyToManyField(Autor)
titulo = models.CharField(
max_length=50
)
fecha = models.DateField('Fecha de Lanzamiento')
portada = models.ImageField(upload_to='portada')
visitas = models.PositiveIntegerField()
stok=models.PositiveIntegerField(default=0)
objects = LibroManager()
class Meta:
verbose_name='Libro'
verbose_name_plural='Libros'
ordering=['titulo','fecha']
def __str__(self):
return str(self.id) + '-'+ self.titulo
def listar_libros_categoria(self,categoria):
return self.filter(
categoria__id=categoria
).order_by('titulo')
La siguiente consulta es entre los modelos libro y categoria solamente
managers.py
class LibroManager(models.Manager):
def listar_libros_categoria(self, categoria):
return self.filter(
categoria__id=categoria #categoria__nombre=categoria #filtrar por nombre
).order_by('titulo')
views.py
class ListLibros2(ListView):
context_object_name = 'lista_libros'
template_name = 'libro/lista2.html'
def get_queryset(self):
return Libro.objects.listar_libros_categoria('1')
urls.py
urlpatterns = [
path(
'libros-2/',
views.ListLibros2.as_view(),
name="libros2"
),
]
templates/libro/lista2.html
<h1>lista de Libros</h1>
<ul>
{% for l in lista_libros %}
<li>{{l.titulo}} - {{l.fecha}}</li>
{% endfor %}
</ul>

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