浅谈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安装第三方库的3种方法
Jun 21 Python
python实现求最长回文子串长度
Jan 22 Python
python使用RNN实现文本分类
May 24 Python
详解python之heapq模块及排序操作
Apr 04 Python
PyTorch的深度学习入门教程之构建神经网络
Jun 27 Python
python plotly绘制直方图实例详解
Jul 22 Python
python3 selenium自动化 下拉框定位的例子
Aug 23 Python
python 画3维轨迹图并进行比较的实例
Dec 06 Python
flask的orm框架SQLAlchemy查询实现解析
Dec 12 Python
解决Tensorboard 不显示计算图graph的问题
Feb 15 Python
Python实现的北京积分落户数据分析示例
Mar 27 Python
教你怎么用Python操作MySql数据库
May 31 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
yii上传文件或图片实例
2014/04/01 PHP
PHP-FPM 的管理和配置详解
2019/02/17 PHP
使用PHP开发留言板功能
2019/11/19 PHP
用js实现的仿sohu博客更换页面风格(简单版)
2007/03/22 Javascript
javascript parseInt 函数分析(转)
2009/03/21 Javascript
用AJAX返回HTML片段中的JavaScript脚本
2010/01/04 Javascript
打豆豆小游戏 用javascript编写的[打豆豆]小游戏
2013/01/08 Javascript
对new functionName()定义一个函数的理解
2014/05/22 Javascript
使用jQuery管理选择结果
2015/01/20 Javascript
JS实现仿微博可关闭弹出层效果
2015/09/21 Javascript
浅谈json取值(对象和数组)
2016/06/24 Javascript
简单实现jQuery多选框功能
2017/01/09 Javascript
ES6使用let命令更简单的实现块级作用域实例分析
2017/03/31 Javascript
微信小程序实现皮肤功能(夜间模式)
2017/06/18 Javascript
js 数组详细操作方法及解析合集
2018/06/01 Javascript
微信小程序手动添加收货地址省市区联动
2020/05/18 Javascript
Vue 实现创建全局组件,并且使用Vue.use() 载入方式
2020/08/11 Javascript
python完成FizzBuzzWhizz问题(拉勾网面试题)示例
2014/05/05 Python
python基于phantomjs实现导入图片
2016/05/13 Python
python利用urllib实现爬取京东网站商品图片的爬虫实例
2017/08/24 Python
python遍历文件夹下所有excel文件
2018/01/03 Python
python爬取淘宝商品详情页数据
2018/02/23 Python
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
python 读取鼠标点击坐标的实例
2018/12/29 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
2019/11/29 Python
python matplotlib包图像配色方案分享
2020/03/14 Python
selenium+python配置chrome浏览器的选项的实现
2020/03/18 Python
Python 读取位于包中的数据文件
2020/08/07 Python
Django日志及中间件模块应用案例
2020/09/10 Python
KIEHL’S科颜氏官方旗舰店:源自美国的顶级护肤品牌
2018/06/07 全球购物
比较基础的php面试题及答案-编程题
2012/10/14 面试题
新学期开学寄语
2014/01/18 职场文书
大国崛起日本观后感
2015/06/02 职场文书
2015年食品安全宣传周活动总结
2015/07/09 职场文书
辞职申请书范本
2019/05/20 职场文书
Netty分布式客户端接入流程初始化源码分析
2022/03/25 Java/Android