概述
最近遇到一个奇葩的问题,user在修改的时候需要修改多对多的groups字段,要求写入数据和读取数据的时候字段都是groups。
最开始想的是用自定义返回值的那个序列化字段,但是发现不能写入数据,就很烦。
。如果直接用groups,返回的时候会报错。
想了很久,最后发现,在返回序列化的时候,读取到的其实是group的manager类,我只要把返回字段的读取数据的方法重构一下就可以实现groups的正确写入和读取了。
代码如下
from restframework.serializers import ListField
class GroupField(ListField):
def to_representation(self,data):
groups=data.all()
return [self.child.to_representation(item.name) for item in groups]
完美!