''list'对象没有属性'model'

问题描述 投票:-1回答:1

我想按平均收视率排序所有故事,当我输入url ... / stories?ordering = average_rating时会出现错误:'list' object has no attribute 'model'

    def get_queryset(self):
        queryset = Story.objects.all()
        ordering = self.request.query_params.get('ordering', None)
        if ordering == 'average_rating':
            return sorted(queryset, key=lambda s: s.average_rating)
        return queryset
class Story(models.Model):
    ...
    @property
    def average_rating(self):
        average_rating = self.ratings.all().aggregate(Avg('rating'))['rating__avg']
        if average_rating is not None:
            return round(float(average_rating), 2)

        return None
python django django-models django-rest-framework
1个回答
0
投票

[sorted(queryset, key=lambda s: s.average_rating)这将返回一个列表,而get_queryset应返回一个queryset


0
投票

顾名思义,get_queryset需要返回查询集,而不是列表。

© www.soinside.com 2019 - 2024. All rights reserved.