【发布时间】:2019-11-08 22:56:17
【问题描述】:
在一个用 Django 构建的网站中,我有一个模型,它有一个 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 Framework 我创建了一个 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
【问题讨论】:
-
您想将数组中的内容连接成字符串并保存到数据库吗?
-
@MenilikBelay - 是的,确实如此。这就是我想做的。
-
你能展示一下你的观点吗?这就是逻辑应该在的地方
-
@MenilikBelay - 我在问题中添加了我的观点
标签: python django serialization django-rest-framework