def is_valID(self,raise_exception=True): imageHandler = ImageHandler() if "member_profile" in self._kwargs["data"]: if "profile_image" in self._kwargs["data"]["member_profile"]: self._kwargs["data"]["member_profile"]["profile_image"] = imageHandler.convertimage( self._kwargs["data"]["member_profile"]["profile_image"]) else: self._kwargs["data"]["member_profile"] = {} valID = super(AuthusermodelSerializer,self).is_valID(raise_exception=raise_exception) return valID解决方法 就个人而言,我会为profile_image(或扩展图像字段)编写一个自定义字段,并覆盖to_internal_value方法以保存此自定义逻辑.这将在现场验证期间调用.这是一个假的例子:
class ProfileImageFIEld(ImageFIEld): def to_internal_value(self,data): converted = ImageHandler().convertimage(data) return super(ProfileImageFIEld,self).to_internal_value(converted)
为了回答您的一般性问题,我通常使用字段和序列化程序的自定义to_internal_value()方法来处理传入和预期数据之间的任何差异.这些方法在验证期间运行,允许您以明显的方式控制数据,以便将来读取您的代码.
澄清
序列化程序本身具有’to_interval_value’方法,允许您在序列化程序的数据验证期间(但在验证数据本身之前)修改/处理传递给它的数据.此时修改数据也将在字段级验证之前进行.因此,如果要将传递给端点的字段重命名为您期望的字段,或者如果要为尚未在数据中传递的字段添加空值,则可以执行此 *** 作.
class MySerializer(serializers.ModelSerializer): def to_internal_value(self,data): if 'member_profile' not in data: data['member_profile'] = {} return super(MySerializer,self).to_internal_value(data)总结
以上是内存溢出为你收集整理的python – 重写Django-Rest-Framework序列化器is_valid方法全部内容,希望文章能够帮你解决python – 重写Django-Rest-Framework序列化器is_valid方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)