浅谈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中的多进程与多线程的使用
Apr 07 Python
python3+mysql查询数据并通过邮件群发excel附件
Feb 24 Python
python用BeautifulSoup库简单爬虫实例分析
Jul 30 Python
不管你的Python报什么错,用这个模块就能正常运行
Sep 14 Python
Python实现通过解析域名获取ip地址的方法分析
May 17 Python
python3模拟实现xshell远程执行liunx命令的方法
Jul 12 Python
浅析matlab中imadjust函数
Feb 27 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
May 24 Python
仅用几行Python代码就能复制她的U盘文件?
Jun 26 Python
python实现Nao机器人的单目测距
Sep 04 Python
pandas中对文本类型数据的处理小结
Nov 01 Python
Python中字符串对象语法分享
Feb 24 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
PHP中基于ts与nts版本- vc6和vc9编译版本的区别详解
2013/04/26 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
2014/06/27 PHP
PHP获取数组的键与值方法小结
2015/06/13 PHP
基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码
2015/08/25 PHP
[原创]php实现子字符串位置相互对调互换的方法
2016/06/02 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
2019/10/15 PHP
JavaScript中null与undefined分析
2009/07/25 Javascript
javascript继承之为什么要继承
2012/11/10 Javascript
JavaScript与HTML的结合方法详解
2015/11/23 Javascript
Javascript使用SWFUpload进行多文件上传
2016/11/16 Javascript
JavaScript面试题(指针、帽子和女朋友)
2016/11/23 Javascript
利用Node.js编写跨平台的spawn语句详解
2017/02/12 Javascript
Node.js中流(stream)的使用方法示例
2017/07/16 Javascript
浅谈vue,angular,react数据双向绑定原理分析
2017/11/28 Javascript
js module大战
2019/04/19 Javascript
使用jquery-easyui的布局layout写后台管理页面的代码详解
2019/06/19 jQuery
Vue项目配置跨域访问和代理proxy设置方式
2020/09/08 Javascript
vue实现一个获取按键展示快捷键效果的Input组件
2021/01/13 Vue.js
Python WEB应用部署的实现方法
2019/01/02 Python
python之pyqt5通过按钮改变Label的背景颜色方法
2019/06/13 Python
大数据分析用java还是Python
2020/07/06 Python
Python Spyder 调出缩进对齐线的操作
2021/02/26 Python
HTML5 canvas基本绘图之填充样式实现
2016/06/27 HTML / CSS
Mytheresa美国官网:德国知名的女性奢侈品电商
2017/05/27 全球购物
CK巴西官方网站:Calvin Klein巴西
2019/07/19 全球购物
模具专业毕业推荐信
2014/03/08 职场文书
爱情寄语大全
2014/04/09 职场文书
小学一年级学生评语
2014/04/22 职场文书
校园活动策划方案
2014/06/13 职场文书
关于清明节的演讲稿
2014/09/13 职场文书
建党伟业的观后感
2015/06/01 职场文书
鲁冰花观后感
2015/06/10 职场文书
门球健将观后感
2015/06/16 职场文书
中小学教师继续教育心得体会
2016/01/19 职场文书
pycharm debug 断点调试心得分享
2021/04/16 Python
ORACLE数据库应用开发的三十个注意事项
2021/06/07 Oracle