Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

324
Vistas
¿Cómo acceder correctamente a los datos de la base de datos django?

He estado tratando de generar una lista de libros que no han sido revisados por un usuario, es decir, los libros para los que no ha escrito una reseña. Aquí están los detalles esenciales de mi models.py :

 class book(models.Model): name = models.CharField(max_length=100) isbn = models.CharField(max_length=15) author = models.CharField(max_length=120) year = models.CharField(max_length=15) genre_name = models.IntegerField() rating = models.IntegerField() description = models.CharField(max_length=2000) img = models.ImageField() def __str__(self): return self.name class reviews(models.Model): name = models.CharField(max_length=150) bookid = models.IntegerField() review = models.CharField(max_length=750) rating = models.IntegerField(default=0) def __str__(self): return self.name

Entonces, he estado tratando de obtener primero los libros que el usuario ha revisado, algo como esto:

 books1 = reviews.objects.filter(name=username)

Y para obtener la base de datos de los libros, estoy haciendo lo siguiente:

 allb = book.objects.all()

Inicialmente, solo generé aleatoriamente 5 números en el range(1,132) y los almacené en una matriz randb , algo como esto:

 randb = [] for i in range(0,5): randb.append(randint(1,132))

Y luego vincular esos números generados a la base de datos del libro que recuperé en allb en la parte HTML.

Mi principal preocupación es que cuando hago eso, termino obteniendo los libros que ya fueron revisados por el usuario, simplemente porque no he dado ninguna condición para eso.

Nota: Quiero recuperar solo las identificaciones de libros que no han sido revisadas por el usuario.

Además, intenté hacer lo siguiente para filtrarlo:

 books1 = reviews.objects.filter(name=username) allb = book.objects.all() randb = [] reviewed_books = books1.bookid /*I get error in this line: 'QuerySet' object has no attribute 'bookid'*/ count = 0 for i in range(0,132): if i not in reviewed_books randb.append(randint(1,132)) count = count + 1 if count == 5 break

No sé cómo hacer que funcione esa línea (la línea comentada en el código anterior). Necesito sugerencias y algún fragmento de código para que mi código funcione.

Gracias de antemano :)

EDITAR: (Olvidé los dos puntos ':' después de las declaraciones if)

 books1 = reviews.objects.filter(name=username) allb = book.objects.all() randb = [] reviewed_books = books1.bookid /*I get error in this line: 'QuerySet' object has no attribute 'bookid'*/ count = 0 for i in range(0,132): if i not in reviewed_books: randb.append(randint(1,132)) count = count + 1 if count == 5: break
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Puede intentar encontrar todos los libros y luego, a partir de ese resultado, excluir los libros que ya ha revisado el usuario:

 book.objects.exclude(id__in=reviews.objects.filter(name=username).values_list('id', flat=True)
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda