浅谈django 模型类使用save()方法的好处与注意事项


Posted in Python onMarch 28, 2020

如下所示:

def user_degree(self):
  degree = self.user.update_grade()
  return degree

def save(self, *args, **kwargs):
  self.degree = self.user_degree()
  self.p1_user = self.get_p1()
  self.p2_user = self.get_second()
  self.p3_user = self.get_third()
  self.first_get_money = self.get_first_commission()
  self.second_get_money = self.get_seconds()
  self.third_get_money = self.get_thirds()
  self.off_price = self.offPrice()
  self.need_pay = self.needPay()
  self.sale_push_money = self.per_sale_money()
  super(self.__class__, self).save(*args, **kwargs)

在django 的模型类里,如果有些字段的值是需要动态生成的,那么就在模型类里同样添加上对应的字段,并写上对应的方法,

然后调用save()方法,把自定义的方法的结果返回给那个字段,然后保存起来。

如果有多个相关联的字段都需要动态生成,那么在save()方法里的顺序就非常重要了,

譬如上面的off_price,need_pay, sale_push_money这三个字段动态生成的值是有先后关系的,顺序错了,有些生成的结果就不对了。所以一定要注意。

下面情况如果遇到时再参考即可,表达有点乱,没有遇到这种情况的可能会感觉莫名其妙,重点是红色字体部分

同时,这样动态填充避免了在字段中设置外键的弊端(当外键对应的字段值发生变化时,此模型类里已经记录的数据也可能会受到影响,)

尤其是需要记录消费信息时,会员的身份变化时,对应的折扣不一样,当会员身份升级时,如果消费记录只是在list页面用方法展示结果,没有使用save()将其填充到

对应的字段,就会使消费记录因为关联性而发生不希望的变动。

补充知识:Django models.save()的问题

Django views.py 引用models.py进行modles.objects.create()然后进行.save的问题。

我们是不能直接进行保存的,提交到数据库里面的。

EX:

我们这里通过post获取到信息后。

views.py

  def post(self, request, ab=None, all_seat=None):

    # 获取用户信息
    date = request.POST.get('date')
    time = request.POST.get('time')

然后

views.py

seatform = SeatForm(request.POST)
          # 提交给数据库
          #这里的is_valid()是Django默认的,检查是否正确
        if seatform.is_valid():
          # 这里向数据库新增一条信息,然后保存
          getSeat = Seat.objects.create(dateTime=date, classtime=time, status='0', user=name, number=label)
          getSeat.save()

上面的SeatForm()是我们在与views.py同级目录下创建的forms.py

forms.py
class SeatForm(forms.Form):
#注意这里的date和time需要与前端的命名要一直
  date = forms.CharField()
  time = forms.CharField()

通过这样的方法,我们就可以保存到数据库了。

以上这篇浅谈django 模型类使用save()方法的好处与注意事项就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
分析Python的Django框架的运行方式及处理流程
Apr 08 Python
Python中super的用法实例
May 28 Python
python实现简单socket通信的方法
Apr 19 Python
Python自定义线程池实现方法分析
Feb 07 Python
python 快速把超大txt文件转存为csv的实例
Oct 26 Python
详解python selenium 爬取网易云音乐歌单名
Mar 28 Python
基于django ManyToMany 使用的注意事项详解
Aug 09 Python
python之生成多层json结构的实现
Feb 27 Python
python之语音识别speech模块
Sep 09 Python
Python timeit模块原理及使用方法
Oct 10 Python
Pandas对每个分组应用apply函数的实现
Dec 13 Python
python实现简单区块链结构
Apr 25 Python
Django 实现对已存在的model进行更改
Mar 28 #Python
浅谈Django QuerySet对象(模型.objects)的常用方法
Mar 28 #Python
django使用F方法更新一个对象多个对象字段的实现
Mar 28 #Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
Mar 28 #Python
使用Django实现把两个模型类的数据聚合在一起
Mar 28 #Python
使用python客户端访问impala的操作方式
Mar 28 #Python
python 安装impala包步骤
Mar 28 #Python
You might like
实用函数5
2007/11/08 PHP
PHP 得到根目录的 __FILE__ 常量
2008/07/23 PHP
PHP form 表单传参明细研究
2009/07/17 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
2016/02/15 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
2016/11/25 PHP
Laravel框架实现文件上传的方法分析
2019/09/29 PHP
在 Laravel 6 中缓存数据库查询结果的方法
2019/12/11 PHP
JavaScript 学习笔记(十六) js事件
2010/02/01 Javascript
jquery阻止后续事件只执行第一个事件
2014/07/24 Javascript
JavaScript 实现打印,打印预览,打印设置
2014/12/30 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
2016/02/19 Javascript
微信公众平台开发教程(五)详解自定义菜单
2016/12/02 Javascript
微信小程序progress组件使用详解
2018/01/31 Javascript
Angular6中使用Swiper的方法示例
2018/07/09 Javascript
layui获取多选框中的值方法
2018/08/15 Javascript
Vue+Webpack完美整合富文本编辑器TinyMce的方法
2018/11/30 Javascript
python之import机制详解
2014/07/03 Python
Python中__new__与__init__方法的区别详解
2015/05/04 Python
Python3读取文件常用方法实例分析
2015/05/22 Python
Python字符串拼接、截取及替换方法总结分析
2016/04/13 Python
Django中日期处理注意事项与自定义时间格式转换详解
2018/08/06 Python
[原创]Python入门教程4. 元组基本操作
2018/10/31 Python
python pexpect ssh 远程登录服务器的方法
2019/02/14 Python
Django REST Framework之频率限制的使用
2019/09/29 Python
最便宜促销价格订机票:Airpaz(总部设在印尼,支持中文)
2018/11/13 全球购物
有影响力的品牌之家:Our Social Collective
2019/06/08 全球购物
教学大赛获奖感言
2014/01/15 职场文书
后进生转化工作制度
2014/01/17 职场文书
家长对孩子的感言
2014/03/10 职场文书
教师先进工作者事迹材料
2014/05/01 职场文书
忠诚教育心得体会
2014/09/03 职场文书
《改造我们的学习》心得体会
2014/11/07 职场文书
2014年专项整治工作总结
2014/11/17 职场文书
2015年纪委工作总结
2015/05/13 职场文书
vue组件的路由高亮问题解决方法
2021/05/11 Vue.js
Python连接Postgres/Mysql/Mongo数据库基本操作大全
2021/06/29 Python