繁体   English   中英

如何在 Django Rest 框架中将数组序列化为字符串?

[英]How to serialize an array to a string in Django Rest Framework?

在使用 Django 构建的网站中,我有一个 model ,它有一个CharField

class Person(models.Model):
    name = models.CharField(max_length=255)
    age = models.IntegerField()
    categories = models.CharField(max_length=255)

CharField 可以包含以逗号分隔的字符串列表。 例如: ADC,HJD,RTP

使用Django Rest 框架,我创建了一个 POST 端点,人们可以向其发布新记录。 不过,该字段作为数组发布在 json 中。 所以 json 看起来像这样:

{
    "name": "John",
    "age": 25,
    "categories": ["ADC", "HJD", "RTP"]
}

我想在Serializer create()方法中简单地join()数组。 但它永远不会达到那个点,因为它被验证器过滤掉了。 我猜验证是在视图中完成的,但我不确定从哪里开始挖掘。

有谁知道我如何让端点接受一个数组并将其转换为 CharField 中的逗号分隔字符串?

[编辑]

这些是我的视图集:

class DevicesViewSet(DatapuntViewSetWritable):
    queryset = Device.objects.all().select_related('owner', 'contact').prefetch_related('types').order_by('id')

    serializer_class = DeviceSerializer
    serializer_detail_class = DeviceSerializer

    http_method_names = ['post', 'list', 'get']


class ContactViewSet(CreateModelMixin, GenericViewSet):
    queryset = Device.objects.none()
    serializer_class = IotContactSerializer
    pagination_class = None

根据已编辑的问题,您可以执行以下操作。 在您的视图中继承 viewsets.ViewSet 并覆盖 create 方法并编写您的连接逻辑。 在这里检查

class CreatePersonViewSet (viewsets.ViewSet):
    def create(self, request):
         """
         Do your logic here... to create
         """
         pass

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM