用于.count()的Django序列化器

时间:2019-07-16 10:37:57

标签: python django django-rest-framework

我正在尝试使服务器端表分页,为此,我需要对象的计数。因此,问题在于,由于序列化器('int' object is not iterable),在尝试获取此值时出现错误,我不知道如何创建返回此值的序列化器。下面是该模型的常用序列化程序,当然它不能正常工作。

views.py

class CountItem(ListAPIView):
    queryset = Item.objects.count()
    serializer_class = ItemSerializer

Serializer.py

class ItemSerializer(serializers.ModelSerializer):

    class Meta:
        model = Item
        fields = '__all__'

1 个答案:

答案 0 :(得分:2)

默认情况下将对结果进行分页,只需将queryset的值固定为包含有效的QuerySet对象,而不是由Item.objects.count()返回的整数:

class CountItem(ListAPIView):
    queryset = Item.objects.all()
    serializer_class = ItemSerializer

如果添加了API端点,则默认情况下,API端点应接受"limit""offset"查询参数,并且响应应包含"count""next""previous"值此配置为您的Django设置:

REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
    'PAGE_SIZE': "25"
}