Mysql Django Rest Framework Serializer中的输入格式和输出格式

Mysql Django Rest Framework Serializer中的输入格式和输出格式,mysql,django-rest-framework,django-serializer,Mysql,Django Rest Framework,Django Serializer,嗨,我的客户端api将向我发送字符数组,如=> ["user1","user2","user3",...] 我的模型字段是CharField like=> emplist = models.CharField(max_length=1000,null=False,blank=False) 我想将此数组输入转换为序列化程序中的字符串,并将字符串输出转换为序列化程序中的数组。我可以这样做吗 我如何用其他方法处理这个数组?您可以在您的模型上进行一些调整 将您的emplist字段更改为\u empl

嗨,我的客户端api将向我发送字符数组,如=>

["user1","user2","user3",...]
我的模型字段是CharField like=>

emplist = models.CharField(max_length=1000,null=False,blank=False)
我想将此数组输入转换为序列化程序中的字符串,并将字符串输出转换为序列化程序中的数组。我可以这样做吗


我如何用其他方法处理这个数组?

您可以在您的模型上进行一些调整

  • 将您的
    emplist
    字段更改为
    \u emplist
  • property
    方法添加到
    emplist的模型中
  • 现在在序列化程序中,只需将
    ListSerializer
    字段添加到
    emplist
    字段中

  • 现在它将非常适合这种情况。

    我尝试了这种方法,但它得到了“\u emptlist”:[ErrorDetail(string='this field is required',code='required')]”。_emplist与emplist有什么不同?下划线只是私有字段的约定,我用@property包装它,因此可以将包装的属性与序列化程序挂钩。为了解决这个问题,只需使用
    null=True
    blank=True
    _emplist = models.CharField(max_length=1000, null=False, blank=False)
    
    @property
    def emplist(self):
        return self._emplist.split(',')
    @emplist.setter
    def emplist(self, value):
        if isinstance(value, list):
            self._emplist = ','.join(value)
        elif isinstance(value, str):
            self._emplist = value
    
    emplist = serializers.ListSerializer(child=serializers.CharField(allow_blank=False, allow_null=False))