Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

318
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda