Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

107
Views
order_by crea entradas duplicadas

Tengo 4 clases de modelos: Usuario, Pila, Artículo y Calificación. Los usuarios pueden crear pilas, agregar artículos, ponerlos en una pila, calificar los artículos y compartir las pilas. Quiero obtener un QuerySet de todos los artículos de una pila específica (obtenidos por pk) y ordenados por la calificación actual de los usuarios. Mi consulta conduce a entradas duplicadas en mi QuerySet si la pila se compartió y otro usuario calificó un artículo, por lo que existe un objeto de calificación para un artículo dos veces:

 qs = stack.article_set.all().order_by("ratings__rating", "-pk")

modelos:

 class Rating(models.Model): article = models.ForeignKey( Article, on_delete=models.CASCADE, related_name='ratings' ) user = models.ForeignKey( settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='ratings' ) rating = models.IntegerField() class Stack(models.Model): title = models.CharField(null=True, max_length=100) owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) class Article(models.Model): stack = models.ForeignKey(Stack, null=True, blank=True, on_delete=models.CASCADE) text = models.TextField(null=True, blank=True)

¿Cómo puedo obtener el QuerySet ordenado sin los duplicados, solo ordenado por las calificaciones de request.user?

Actualizar

Lo que hago por ahora es consultar dos veces. Una vez para ordenar los objetos de artículo ya calificados por calificación y una segunda vez para ordenar los objetos de artículo actualmente no calificados.

 context['rated_articles'] = deck.article_set.filter( ratings__user__exact=self.request.user ).order_by("ratings__rating", "-pk") context['not_rated_articles'] = deck.article_set.all().exclude( ratings__user__exact=self.request.user )
about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Debería poder filtrar el conjunto de artículos antes de ordenarlo, según el propietario de las pilas

 user = stack.owner stack.article_set.filter(rating__user__exact=user).order_by("ratings__rating", "-pk")
about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!