浅谈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中使用tarfile压缩、解压tar归档文件示例
Apr 05 Python
Linux下用Python脚本监控目录变化代码分享
May 21 Python
Python的Django框架中的数据过滤功能
Jul 17 Python
Python利用operator模块实现对象的多级排序详解
May 09 Python
python取代netcat过程分析
Feb 10 Python
Python中偏函数用法示例
Jun 07 Python
python获取指定字符串中重复模式最高的字符串方法
Jun 29 Python
Puppeteer使用示例详解
Jun 20 Python
python绘图模块matplotlib示例详解
Jul 26 Python
利用Python校准本地时间的方法教程
Oct 31 Python
Python turtle库绘制菱形的3种方式小结
Nov 23 Python
python 检查数据中是否有缺失值,删除缺失值的方式
Dec 02 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桌面中心(二) 数据库写入
2007/03/11 PHP
PHP Parse Error: syntax error, unexpected $end 错误的解决办法
2012/06/05 PHP
apache+codeigniter 通过.htcaccess做动态二级域名解析
2012/07/01 PHP
PHP聊天室简单实现方法详解
2018/12/08 PHP
jQuery 使用手册(四)
2009/09/23 Javascript
javascript 窗口加载蒙板 内嵌网页内容
2010/11/19 Javascript
仅Firefox中链接A无法实现模拟点击以触发其默认行为
2011/07/31 Javascript
js 获取radio按钮值的实例
2013/08/17 Javascript
js取值中form.all和不加all的区别介绍
2014/01/20 Javascript
js+html5实现canvas绘制镂空字体文本的方法
2015/06/05 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
2015/09/04 Javascript
BootStrap3中模态对话框的使用
2017/01/06 Javascript
JS实现点击表头表格自动排序(含数字、字符串、日期)
2017/01/22 Javascript
Vue组件实例间的直接访问实现代码
2017/08/20 Javascript
30分钟快速实现小程序语音识别功能
2018/11/27 Javascript
页面内锚点定位及跳转方法总结(推荐)
2019/04/24 Javascript
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
2020/02/06 NodeJs
简单的通用表达式求10乘阶示例
2014/03/03 Python
Python 装饰器深入理解
2017/03/16 Python
python 简单的绘图工具turtle使用详解
2017/06/21 Python
使用python为mysql实现restful接口
2018/01/05 Python
详解python的ORM中Pony用法
2018/02/09 Python
python三大神器之fabric使用教程
2019/06/10 Python
pytorch+lstm实现的pos示例
2020/01/14 Python
python中有函数重载吗
2020/05/28 Python
python用tkinter实现一个gui的翻译工具
2020/10/26 Python
Django-silk性能测试工具安装及使用解析
2020/11/28 Python
Chemist Warehouse中文网:澳洲连锁大药房
2021/02/05 全球购物
《姥姥的剪纸》教学反思
2014/02/25 职场文书
护士实习求职信
2014/06/22 职场文书
入股协议书范本
2014/11/01 职场文书
学术会议通知
2015/04/15 职场文书
一百条裙子读书笔记
2015/07/01 职场文书
五年级数学教学反思
2016/02/16 职场文书
检讨书之工作不认真
2019/08/14 职场文书
Python实现机器学习算法的分类
2021/06/03 Python