Как отсортировать объект по количеству заказов, полученных по полю `get_queryset` [duplicate]
В приведенном ниже коде я могу получить все количество orders
, которые назначены бизнесу.
Но вот в чем вопрос, как я могу изменить этот код, чтобы я мог сортировать users
по тому, какой бизнес имеет больше всего orders
?
class Order(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
author = models.ForeignKey(User, on_delete=models.CASCADE,related_name='ordersauthor')
profile = models.ForeignKey(User, on_delete=models.CASCADE,related_name='orderscheck')
article = models.ForeignKey(Article, null=True, blank=True, on_delete=models.CASCADE,related_name='ordersarticle')
timestamp = models.DateTimeField(auto_now_add=True)
---------
class PublicUserViewSet(viewsets.ModelViewSet):
permission_classes = (IsAuthenticated,)
queryset = User.objects.all().order_by('#HIGHEST NUMBER OF ORDERS')
serializer_class = UserSerializer
filter_backends = [filters.SearchFilter,DjangoFilterBackend]
pagination_class = StandardResultsSetPagination
def get_queryset(self, *args, **kwargs):
return (
super()
.get_queryset(*args, **kwargs)
.annotate(
num_orders=Count(
'orderscheck',
orders__timestamp__range=Q(
orderscheck__timestamp__range=(date.today(), date.today() + timedelta(days=7))
),
)
)
)
----------
class UserSerializer(serializers.ModelSerializer):
orders = serializers.IntegerField(read_only=True, source='num_orders')
Первоначальный выход:
{ User 1
.....,
"orders": 4,
},
{ User 2
.....,
"orders": 2,
},
{ User 3
.....,
"orders": 3,
},
Ожидаемый выход:
{ User 1
.....,
"orders": 4,
},
{ User 3
.....,
"orders": 3,
},
{ User 2
.....,
"orders": 2,
},