[英]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.