Conectar el Modelo Persona con el Manager
models.py
from .managers import AutorManager
class Persona(models.Model):
nombre = models.CharField(
max_length=50
)
apellidos = models.CharField(
max_length=50
)
nacionalidad = models.CharField(
max_length=30
)
edad = models.PositiveIntegerField()
obejcts=AutorManager() #sirve para conectar el manager con el modelo
def __str__(self):
return str(self.id)+'-'+ self.nombre + '-'+ self.apellidos
managers.py
from django.db import models
class AutorManager(models.Manager):
""" managers para el modelo autor"""
def buscar_autor(self,kword): #recibe el parametro kword
# resultado=self.filter(nombre=kword) #nombre es un atributo del modelo Autor
# el self de arriba equivale a Autor.objects
resultado=self.filter(
nombre__icontains=kword #__icontains busca un valor igual o parecido
)
return resultado
views.py
class ListarAutores(ListView):
context_object_name='lista_autores2'
template_name='autor/lista2.html'
def get_queryset(self):
palabra_clave=self.request.GET.get('kword','') #recuperamos el 'kword'
return Autor.objects.buscar_autor(palabra_clave)
urls.py
from .import views
app_name = "autor_app"
urlpatterns = [
path(
'autores/',
views.ListarAutores.as_view(),
name="inicio"
),
]
templates/autor/lista.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>lista de autores</h1>
<p>
<form method="GET">{% csrf_token %}
<input type="text" id="kword" name="kword" placeholder="ingrese nombre">
<button type="submit">Consultar</button>
</form>
</p>
{% for a in lista_autores2 %}
<li>
{{a.nombre}}
</li>
{% endfor %}
</body>
</html>


Última modificación: 29 Mar 2024 14:33
No hay comentarios aún
Sé el primero en comentar este artículo