我正在序列化内置的Django Group模型,并希望在序列化程序中添加一个字段来计算组中的用户数.我目前正在使用以下序列化程序:

class GroupSerializer(serializers.ModelSerializer):
    class Meta:
        model = Group
        fields = ('id', 'name', 'user_set')

这将返回组ID和名称以及组中的用户数组(用户ID):

{
    "id": 3,
    "name": "Test1",
    "user_set": [
      9
    ]
}

相反,我希望作为输出的内容是这样的:

{
    "id": 3,
    "name": "Test1",
    "user_count": 1
}

任何帮助都将不胜感激.谢谢.

推荐答案

这应该管用

class GroupSerializer(serializers.ModelSerializer):

    user_count = serializers.SerializerMethodField()

    class Meta:
        model = Group
        fields = ('id', 'name','user_count')

    def get_user_count(self, obj):
        return obj.user_set.count()

这将向序列化程序添加一个user_count字段,该字段的值由get_user_count设置,它将返回user_set的长度.

您可以在此处找到有关SerializerMethodField的更多信息:http://www.django-rest-framework.org/api-guide/fields/#serializermethodfield

Django相关问答推荐

使用django直接计算geohash而不创建模型

在AWS s3中获取项目的URL

Django:作为模型中的列表元素的字段

测试 - 两个类共享相同的登录代码,但它只能在一个类中工作

一次请求中更新整个Django模型

如何在不编写每个视图中的逻辑的情况下呈现值,Django?

Django rest框架:自定义对象权限不起作用

如何在Django中制作一个不 Select 以前日期的日期 Select 器

如何在 django 中修改现有模型实例?

未为部署的 django rest 框架加载静态文件

组织大型 Django 元素的指南

Django聚合:仅求和返回值?

在 django 模板中遇到 user.is_authenticated 问题

Django中视图的多个decorator :执行顺序

Django:验证上传文件的文件类型

访问 django 管理模板中的对象

如何将本地文件分配给 Django 中的 FileField?

Django 模型(1054,Unknown column in 'field list')

django.db.utils.OperationalError 无法连接到服务器

ImportError:没有名为 django_filters 的模块