¿Es posible obtener un objeto que tenga el mayor número de objetos relacionados?
Quiero elegir el plan más utilizado, que es un plan con la cantidad máxima de objetos UserPlan .
Puedo obtener el número pero no la instancia.
number_of_users = Plan.objects.aggregate(max_users=Max('userplan'))['max_users']código:
class UserPlan(Model): plan = ForeignKey('Plan'..) class Plan(Model): ... @staticmethod def favorite(self): number_of_users = Plan.objects.aggregate(max_users=Max('userplan'))['max_users'] # ?Podría encontrarlo usando loop pero podría ser lento.
Dado que la información ya está almacenada en una columna, ¿qué tal si simplemente la ordenamos?
obj_most_popular = Plan.objects.order_by('userplan').primero()
Puede leer más sobre esto en los documentos aquí: https://docs.djangoproject.com/en/1.10/ref/models/querysets/#order-by