众所周知,在django的model中,可以某些字段设置@property和setter deleter getter,这样就可以在存入数据的时候进行一些操作,具体原理请参见廖雪峰大神的博客https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386820062641f3bcc60a4b164f8d91df476445697b9e000

可是在我的实现中,如果在数据库中实现了setter方法,在使用django restful framework序列化后,这个property会被自动忽略,具体表现就是虽然传入了这个属性的值,但是在最终写入数据库时根本看不见这个,写入的是空值。

这是我的代码

class Host(models.Model):id = models.AutoField(primary_key=True)superPass = models.CharField(max_length=128, null=True, default='')@propertydef superPassword(self):origin_password = self.super_pass[0:-5]return origin_password@superPassword.setterdef superPassword(self,new_password):origin_password = new_passwordencrypted = origin_password + "fadfa"self.super_pass = encrypted @superPassword.deleterdef superPassword(self):del self.super_pass

可是插入的时候总是superpass无法插入。查找了源码,是在django-restful-framework目录下的 serializers.py的第236行有这么一行代码

self._validated_data = self.run_validation(self.initial_data)

调试可以看到在self.initial_data中可以看到我的字段,可是在self._validated_data中无法看到这个字段。

再往下查查不到了,继承的太乱了,实在不知道这种大型项目是怎么维护的。

实在没法了,只能在视图中重载了perform_create方法看下取到的值是什么

    def perform_create(self, serializer):print(serializer)print(type(serializer))serializer.save()

看到serializer中关于superpassword这一行是

superPassword = ReadOnlyField()

花擦,原来问题在这里,他直接把这个字段给我置为只读了,吐血

怎么解决呢?只能在序列化的时候在类中加一个属性

class HostSerializer(serializers.ModelSerializer):superPassword = serializers.CharField(allow_null=True, label='superPassword', max_length=16, required=False)class Meta:省略

这样就好了,原来如北,写篇博客声讨一下这个大坑

转载于:https://www.cnblogs.com/wuxie1989/p/9014877.html

在django restful framework中设置django model的property相关推荐

  1. 【接口文档】Django restful framework中自动生成API文档

    Django restful framework中自动生成API文档 一.Swagger概述 1.引言 当接口开发完成,紧接着需要编写接口文档.传统的接口文档使用Word编写,or一些接口文档管理平台 ...

  2. django restful 请求_利用 Django REST framework 构建 RESTful Web API

    利用 Django REST framework 构建 RESTful Web API 终于到了动手操作的环节啦,这一节,我们以师生管理系统为例,带领大家搭建一套 framework Web API. ...

  3. Django REST Framework中的Serializer relations

    官方文档原文 Relational fields are used to represent model relationships. They can be applied to ForeignKe ...

  4. 如何在 Django REST Framework 中对分页结果过滤和排序?

    作者 | 大江狗  责编 | 张文 来源 | Python Web 与 Django 开发 (ID:Python_Web_Django) 在本篇文章中我们将向你演示如何在 Django REST Fr ...

  5. 解决Django Rest Framework中的跨域问题

    解决Django Rest Framework中的跨域问题 参考文章: (1)解决Django Rest Framework中的跨域问题 (2)https://www.cnblogs.com/qicu ...

  6. 10- vue django restful framework 打造生鲜超市 -用户登录和手机注册(中)

    Vue+Django REST framework实战 搭建一个前后端分离的生鲜超市网站 Django rtf 完成 手机注册和用户登录(中) Json Web Token的原理 因为我们的drf 的 ...

  7. 7- vue django restful framework 打造生鲜超市 -商品类别数据展示(上)

    Vue+Django REST framework实战 搭建一个前后端分离的生鲜超市网站 Django rtf 完成 商品列表页 并没有将列表页的数据json 与前端的页面展示结合起来 讲解如果将dr ...

  8. 21- vue django restful framework 打造生鲜超市 -首页商品分类显示功能

    Django2.0.2(Django-rest-framework)以及前端vue开发的前后端分离的商城网站 线上演示地址: http://vueshop.mtianyan.cn/ github源代码 ...

  9. Django restful Framework 之序列化与反序列化

    1. 首先在已建好的工程目录下新建app命名为snippets,并将snippets app以及rest_framework app加到工程目录的 INSTALLED_APPS 中去,具体如下: IN ...

最新文章

  1. 开发一次、多端覆盖的开源统一框架
  2. 【控制】《多智能体系统一致性与复杂网络同步控制》郭凌老师-第3章-具有扩散作用的多智能体系统领导-跟随一致性
  3. 多线程:Executor、Sleep、Deamon、Yeild
  4. 串联矩阵matlab代码,Matlab串联矩阵函数【horzcat】详细解析
  5. 微软CEO纳德拉拥抱Linux意欲何为?
  6. 前后端开发是怎么合作分工的
  7. cad怎么将图层后置_CAD中如何将某1个图层置于其他图层之上.doc
  8. Mybatis源码阅读(二):动态节点解析2.1 —— SqlSource和SqlNode
  9. 计算机等级考试java题型_计算机等级考试报考建议
  10. 普林斯顿校长2018演讲:读书无用是最大的谎言
  11. 品质标签分几种颜色_北京标签不干胶印刷厂
  12. qrcodeJS生成二维码
  13. Verilog实现千兆以太网传输
  14. python 修改证件照的尺寸
  15. 5.2 BP误差逆传播
  16. JS实现数组和数组对象倒序(reverse方法)
  17. java小白日常报错
  18. html 掉爱心特效,微信发什么会掉爱心特效(微信特效词语合集)
  19. linux 下 FFmpeg 录制命令
  20. 白魔法师--图的连通块问题(牛客小白月赛25)

热门文章

  1. oracle 迁移用户信息,Oracle备份一个用户并迁移
  2. bootanimation文件名_Android开机logo制作
  3. Google Guava官方教程
  4. 各类电脑高效率神器使用及下载地址
  5. mysql忘记密麻麻_mysql忘记密码怎么办
  6. linux ls什么意思,linux – 你如何确定bash ls的颜色是什么意思?
  7. abap如何找屏幕增强_因增强导致BDC录屏执行异常的梗
  8. 一周一论文(翻译 总结)— [SOCC 13] jVerbs Ultra-Low Latency for Data Center Applications 在JVM虚拟机上构建RDMA的verbs操作
  9. unity调用普通java类_Unity中C#和Java的相互调用实例代码
  10. linux 不关机添加硬盘,完美解决Ubuntu Linux关机异响[SATA硬盘]