Tengo un modelo de Post y Profile . Estoy tratando de encontrar la category más común en una lista de publicaciones de usuarios.
Aquí están mis modelos:
class Post(models.Model): user = models.ForeignKey(User, blank=True, null=True) category = models.CharField(max_length=20, choices=CATEGORY_CHOICES, default='1') class Profile(models.Model): user = models.ForeignKey(User, blank=True, null=True) def most_common_category(self): posts = Post.objects.filter(user=self.user) for post in posts: print(post.category) # 1, 1, 2, 3, 2, 2, 4, 1, 2, 2¿Cómo haría esto?
puedes hacerlo usando una consulta sin procesar. En la tabla de consulta sin formato, debe ser el nombre que le dio a la clase Meta: o el nombre de la tabla guardado en la base de datos shema.
most_common = Post.objects.raw(select 1 as id, category, count(category) from post group by category order by count(category) desc) o puede usar .values .
most_common = Post.objects.values("category").annotate(count=Count('category')).order_by("-count")from django.db.models import Count most_common = Post.objects.annotate(mc=Count('category')).order_by('-mc')[0].mcPuede encontrar más información en los documentos