together integerfield example django

django - integerfield - Ordenar por recuento de un campo ForeignKey?



forms.select django (1)

from django.db.models import Count top_users = User.objects.filter(problem_user=False) / .annotate(num_submissions=Count(''submission'')) / .order_by(''-num_submissions'')[:3]

No mencionaste problem_user en tu código de modelo de ejemplo, pero lo he dejado en el supuesto de que es un BooleanField en User .

Es casi seguro que se trata de una pregunta duplicada, en cuyo caso, disculpas, pero he estado buscando alrededor de media hora en SO y no puedo encontrar la respuesta aquí. Probablemente estoy usando los términos de búsqueda equivocados, lo siento.

Tengo un modelo de Usuario y un modelo de Presentación. Cada envío tiene un campo ForeignKey llamado user_submitted para el usuario que lo subió.

class Submission(models.Model): uploaded_by = models.ForeignKey(''User'') class User(models.Model): name = models.CharField(max_length=250 )

Mi pregunta es bastante simple: ¿cómo puedo obtener una lista de los tres usuarios con más envíos?

Intenté crear un método num_submissions en el modelo de usuario:

def num_submissions(self): num_submissions = Submission.objects.filter(uploaded_by=self).count() return num_submissions

y luego haciendo:

top_users = User.objects.filter(problem_user=False).order_by(''num_submissions'')[:3]

Pero esto falla, al igual que todas las otras cosas que he intentado. ¿Puedo hacerlo usando una consulta de base de datos inteligente? ¿O debería hacer algo más hacky en el archivo de vistas?