【问题标题】:Django serializer for .count().count() 的 Django 序列化程序
【发布时间】:2019-07-16 23:37:22
【问题描述】:

我正在尝试进行服务器端表格分页,为此我需要对象的计数。所以问题是由于序列化程序('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__'

【问题讨论】:

  • 使用这个queryset = Item.objects.all()
  • @shafik 是为了什么?我不需要所有对象,我只需要它们的编号。
  • “他们的号码”是什么意思?只是他们的身份证?你可以使用valuesvalues_list 来做这个
  • 我认为你根本不需要ListApiView,你只需要一个直接的基本视图

标签: python django django-rest-framework


【解决方案1】:

结果默认分页,只需将queryset 值修复为包含有效的QuerySet 对象,而不是Item.objects.count() 返回的整数:

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

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

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

【讨论】:

  • 是的,ty,这解决了我的问题,但值得一提的是,它默认不做,需要在settings.py中添加REST_FRAMEWORK = { 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination', 'PAGE_SIZE': "your int value here" }
猜你喜欢
  • 2023-03-16
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-06
  • 2016-12-15
相关资源
最近更新 更多