如何使用django-rest-framework序列化ValuesQuerySet?

0 投票
1 回答
658 浏览
提问于 2025-04-18 10:41

我想为一个复杂的查询建立一个API。

看过相关文档后,我更倾向于使用django-rest-framework,因为它可以自动处理ValuesQuerySet的数据格式化和分页,这样我就不用自己去做这些了。

不过,我只找到关于默认模型QuerySet的文档,却没有找到关于如何格式化ValuesQuerySet(当模型不明确时)的相关资料。我该怎么做呢?

我看到过这个回答,但那个解决方案对我来说不适用。

以下是代码,没有使用django-rest-framework:

@login_required
def category_tallies(request):
    my_friends = FacebookUser.objects.filter(user_id=request.user.id)
    cat_tallies = FacebookLike.objects.filter(id__in=my_friends).values('category').annotate(Count('category')).order_by('-category__count')
    return HttpResponse(
        json.dumps(cat_tallies),
        mimetype='application/json')

1 个回答

1

试试这个:

from django.core import serializers

cat_tallies = FacebookLike.objects.filter(id__in=my_friends).annotate(count=Count('category')).order_by('-count')
json_dump = serializers.serialize('json', cat_tallies, fields=('category','count'))

撰写回答