Как отсортировать объект по количеству заказов, полученному по полю get_queryset [дубликат] ⇐ Python
-
Anonymous
Как отсортировать объект по количеству заказов, полученному по полю get_queryset [дубликат]
Here in code below I can get all the number of orders that are assigned to business. But here is the question, how can I edit this code so that I can sort users by which business that has most 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') Initial Output:
{ User 1 ....., "orders": 4, }, { User 2 ....., "orders": 2, }, { User 3 ....., "orders": 3, }, Expected Output:
{ User 1 ....., "orders": 4, }, { User 3 ....., "orders": 3, }, { User 2 ....., "orders": 2, },
Источник: https://stackoverflow.com/questions/781 ... yset-field
Here in code below I can get all the number of orders that are assigned to business. But here is the question, how can I edit this code so that I can sort users by which business that has most 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') Initial Output:
{ User 1 ....., "orders": 4, }, { User 2 ....., "orders": 2, }, { User 3 ....., "orders": 3, }, Expected Output:
{ User 1 ....., "orders": 4, }, { User 3 ....., "orders": 3, }, { User 2 ....., "orders": 2, },
Источник: https://stackoverflow.com/questions/781 ... yset-field