Python 如何根据Django中的两个字段对queryset进行排序?

Python 如何根据Django中的两个字段对queryset进行排序?,python,django,python-3.x,django-rest-framework,django-views,Python,Django,Python 3.x,Django Rest Framework,Django Views,这是我的系列化课程: class RankNewsChannelSerializers(serializers.ModelSerializer): class Meta: model = News_Channel fields = ('id', 'name','total_star', 'total_user') 我的看法是: class NewsChannelRankApi(ListAPIView): queryset = News_Chann

这是我的系列化课程:

class RankNewsChannelSerializers(serializers.ModelSerializer):
    class Meta:
        model = News_Channel
        fields = ('id', 'name','total_star', 'total_user')
我的看法是:

class NewsChannelRankApi(ListAPIView):
    queryset = News_Channel.objects.order_by('-total_star').all()
    serializer_class = RankNewsChannelSerializers
我得到的响应是根据
总星数
排序的,如下所示:

[
    {
        "id": 9,
        "name": "The Hindu",
        "total_star": 36,
        "total_user": 5
    },
    {
        "id": 1,
        "name": "NDTV",
        "total_star": 36,
        "total_user": 5
    },
    {
        "id": 10,
        "name": "Firstpost",
        "total_star": 35,
        "total_user": 6
    },
    {
        "id": 14,
        "name": "DD News",
        "total_star": 25,
        "total_user": 4
    }
]

但是我需要按照
total\u star/total\u user
对响应进行排序。 这是我的无效方法,但它会让你大致了解我想要实现的目标

class NewsChannelRankApi(ListAPIView):
    queryset = News_Channel.objects.order_by('-total_star/total_user').all()
    serializer_class = RankNewsChannelSerializers

如果还有其他方法,请帮助我?

您可以添加一个具有所需值的字段,然后按其排序。 此外,您不需要
.all()

queryset=News\u Channel.objects\
.annotate(每个用户的星数=F('total星数')/F('total星数'))\
.order_by('-stars_per_user'))

谢谢,这很有帮助