conectar el modelo libro con el manager
models.py
from django.db import models
#apps de tercero
from PIL import Image
from applications.autor.models import Autor
from .managers import LibroManager,CategoriaManager
class Libro(models.Model):
categoria = models.ForeignKey(
Categoria,
on_delete=models.CASCADE,
related_name='categoria_libro'
)
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() #conexion con el manager
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')
managers.py
class LibroManager(models.Manager):
def listar_libros(self, kword):
resultado = self.filter(
titulo__icontains=kword, #titulo es el atributo del modelo libro
fecha__range=('2000-01-01', '2010-01-01') #fecha__range lo trae django
)
return resultado
views.py
from .models import Libro
class ListLibros(ListView):
context_object_name = 'lista_libros'
template_name = "libro/lista.html"
def get_queryset(self):
palabra_clave = self.request.GET.get("kword",'')
return Libro.objects.listar_libros(palabra_clave)
urls.py
from django.contrib import admin
from django.urls import path
from .import views
urlpatterns = [
path(
'libros/',
views.ListLibros.as_view(),
name="libros"
),
]
templates/libro/lista.html
<h1>lista de Libros</h1>
<p>
<form method="GET">{% csrf_token %}
<input type="text" id="kword" name="kword" placeholder="ingrese nombre">
</form>
</p>
<ul>
{% for l in lista_libros %}
<li>{{l.titulo}} - {{l.fecha}}</li>
{% endfor %}
</ul>

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