【发布时间】:2018-01-24 17:01:54
【问题描述】:
我有一个非常复杂的 API,它通过 POST 请求接受不同的过滤器字段。结果是数据库中的项目列表。如果用户过滤不好,总的结果集可能有数千个项目。
API 将仅返回 30 个项目,但我想添加满足搜索条件的项目总数。我知道我可以在 Serializer 类中添加一个自定义字段来返回计数,但我不知道如何访问查询集来查询 count()。
我确信有一个我缺少的简单解决方案
谢谢 埃亚尔
【问题讨论】:
我有一个非常复杂的 API,它通过 POST 请求接受不同的过滤器字段。结果是数据库中的项目列表。如果用户过滤不好,总的结果集可能有数千个项目。
API 将仅返回 30 个项目,但我想添加满足搜索条件的项目总数。我知道我可以在 Serializer 类中添加一个自定义字段来返回计数,但我不知道如何访问查询集来查询 count()。
我确信有一个我缺少的简单解决方案
谢谢 埃亚尔
【问题讨论】:
我得到了这个工作,但解决方案很丑陋,我不敢相信框架中没有对此的本地支持。我一定是错过了什么
#querysey has several filters set till now
#save the querysey
queryset_orig = queryset
#add limits
queryset = queryset.filter()[:30]
serializer = ItemsSerializer(queryset, many=True)
#add total count to the first items only
serializer.data[0]. update ({'count':queryset_orig.count()})
【讨论】: