Django序列化器输出作为JSON对象的一部分

你是

语境

我有2个模型:CustomerDeviceGroup

目前,我有一个API端点/api/v1/device-groups/?customer_uuid=<customer_uuid>,它返回DeviceGroups与给定相关的,Customer如下所示:

[
    {
        "group_uuid": "c61361ac-0826-41bb-825a-8aa8e014ae0c",
        "device_group_name": "Default",
        "color": "0a2f45",
        "is_default": true
    },
    {
        "group_uuid": "1a86e8e4-b41b-4f33-aefb-ce984ef96144",
        "device_group_name": "Testgroup",
        "color": "123456",
        "is_default": false
    }
] 

目标

我希望数组成为DeviceGroups这样的对象的一部分:

"device_groups": 
[
    {
        "group_uuid": "c61361ac-0826-41bb-825a-8aa8e014ae0c",
        "device_group_name": "Default",
        "color": "0a2f45",
        "is_default": true
    },
    {
        "group_uuid": "1a86e8e4-b41b-4f33-aefb-ce984ef96144",
        "device_group_name": "Testgroup",
        "color": "123456",
        "is_default": false
    }
] 

楷模

# models.py

class Customer(models.Model):
    customer_uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, db_index=True)
    customer_name = models.CharField(max_length=128, unique=True)


class DeviceGroup(models.Model):
    group_uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, db_index=True)
    customer_uuid = models.ForeignKey(Customer, on_delete=models.DO_NOTHING)
    device_group_name = models.CharField(max_length=20)
    color = models.CharField(max_length=10)
    is_default = models.BooleanField(default=False)

序列化器

# serializers.py

class DeviceGroupSerializer(serializers.ModelSerializer):
    class Meta:
        model = DeviceGroup
        fields = ('group_uuid', 'device_group_name', 'color', 'is_default')

视图

# views.py

class DeviceGroupCustomerViewSet(viewsets.ModelViewSet):
    serializer_class = DeviceGroupSerializer

    def get_queryset(self):
        return DeviceGroup.objects.filter(customer_uuid=self.request.GET['customer_uuid'])

我尝试创建一个新的,serializer但不能解决我的问题:

class TestSerializer(serializers.ModelSerializer):
    device_groups = DeviceGroupSerializer(many=True, read_only=True)

    class Meta:
        model = DeviceGroup
        fields = ('device_groups', 'group_uuid', 'device_group_name', 'color', 'is_default')

为了获得所需的输出,我需要更改什么?

西哈布丁KM

您可以像这样更新您的视图

def list(self, request):
    queryset = DeviceGroup.objects.filter(customer_uuid=self.request.GET['customer_uuid'])
    serializer = UserSerializer(queryset, many=True)
    return Response({'device_groups': serializer.data})

这将获得所需的输出。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 JSON C# 中包含类名作为序列化的一部分

如何仅反序列化json文档的一部分?

反序列化JSON对象的一部分并将其序列化回原样,并保留其余属性

反序列化 JSON,然后将其中的一部分序列化回来

将XmlDocument的一部分反序列化为对象

使用Protobuf序列化消息的一部分

使用Django自定义管理器方法作为Q对象链的一部分

输出对象的一部分

仅绘制JSON输出的一部分

如何通过PHP在JSON添加@符号作为对象名的一部分

如何转义作为对象加载的 json 的一部分

如何仅将Json文件的一部分反序列化为类C#

将数组序列化为XML作为HttpError的一部分时,发生InvalidOperationException

如何将类属性序列化为 xml 根的一部分?

保留数组的第一个元素作为序列的一部分

多行字符串作为序列的一部分

XML序列化-将XML的一部分保留为XmlElement

作为Circe-Json的一部分,如何使用Hcursor或Optics返回匹配对象的列表?

如何访问作为对象数组一部分的对象内的数组的值?

打印“ \ n”或换行符作为终端输出的一部分

Haskell:是否可以将类型作为程序的一部分输出?

将输出文本作为命令按钮的一部分

Javascript将HTML标签作为innerHTML输出到屏幕的一部分

Sequelize中的异步获取器/设置器作为属性的一部分

选择时间序列的一部分

使用响应头作为 Retrofit 返回对象的一部分

粒子JS –调用作为对象一部分的函数

将对象作为ng-map标记的一部分传递

作为WHERE子句的一部分检查数组对象