Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按描述中模型的@属性排序';行不通_Python_Django_Django Rest Framework - Fatal编程技术网

Python 按描述中模型的@属性排序';行不通

Python 按描述中模型的@属性排序';行不通,python,django,django-rest-framework,Python,Django,Django Rest Framework,我创建了自己的排序类,当我想按受欢迎程度排序时,它只会在desc中按评级排序所有故事 class CustomOrdering(OrderingFilter): allowed_filters = ['top'] def get_ordering(self, request, queryset, view): ... def filter_queryset(self, request, queryset, view): ordering

我创建了自己的排序类,当我想按受欢迎程度排序时,它只会在desc中按评级排序所有故事

class CustomOrdering(OrderingFilter):
    allowed_filters = ['top']

    def get_ordering(self, request, queryset, view):
        ...

    def filter_queryset(self, request, queryset, view):
        ordering = self.get_ordering(request, queryset, view)

        if ordering:
            ordering = ['-rating']

        if ordering:
            return queryset.order_by(*ordering)

        return queryset
models.py

class Story(models.Model):
    ....
    @property
    def average_rating(self):
        average_rating = self.rating_set.all().aggregate(Avg('rating'))['rating__avg']
        if average_rating is not None:
            return round(float(average_rating), 2)

如果不订购,是否应该将其重写为
?当前,如果设置了
排序
,则可以设置
排序=[''-在']
处创建。不能使用
属性进行排序-排序发生在数据库级别,在排序之前,您首先需要使用该计算对queryset进行注释,或者您可以将queryset转换为一个列表,然后在python中执行排序。并举例说明