![](/img/trans.png)
[英]How to sort django queryset with two fields as a combined field
[英]How to sort queryset based on two fields in Django?
這是我的serilizer課:
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
我得到的響應是基於total_stars
排序的,如下所示:
[
{
"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_star/total_user
排序。 像這樣,這是我無效的方法,但是它將使您大致了解我想要實現的目標。
class NewsChannelRankApi(ListAPIView):
queryset = News_Channel.objects.order_by('-total_star/total_user').all()
serializer_class = RankNewsChannelSerializers
如有需要,請幫助我嗎?
您可以添加具有所需值的字段,然后對其進行排序。 另外,您不需要.all()
queryset = News_Channel.objects \
.annotate(stars_per_user=F('total_star')/F('total_user')) \
.order_by('-stars_per_user')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.