Python 按描述中模型的@属性排序';行不通
我创建了自己的排序类,当我想按受欢迎程度排序时,它只会在desc中按评级排序所有故事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
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中执行排序。并举例说明