浅谈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的web框架中的Model的教程
Apr 29 Python
玩转python爬虫之正则表达式
Feb 17 Python
Python中Iterator迭代器的使用杂谈
Jun 20 Python
Python实现的文本对比报告生成工具示例
May 22 Python
python 剪切移动文件的实现代码
Aug 02 Python
Python中矩阵创建和矩阵运算方法
Aug 04 Python
Python设计模式之适配器模式原理与用法详解
Jan 15 Python
django使用django-apscheduler 实现定时任务的例子
Jul 20 Python
python 模拟登录B站的示例代码
Dec 15 Python
Python实现滑雪小游戏
Sep 25 Python
python基础之类方法和静态方法
Oct 24 Python
Python+OpenCV实现图片中的圆形检测
Apr 07 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 trim 去除空字符的定义与语法介绍
2010/05/31 PHP
JavaScript 字符串与数组转换函数[不用split与join]
2009/12/13 Javascript
Web开发者必备的12款超赞jQuery插件
2010/12/03 Javascript
JS模拟面向对象全解(一、类型及传递)
2011/07/13 Javascript
Javascript四舍五入Math.round()与Math.pow()使用介绍
2013/12/27 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
2013/12/29 Javascript
学习JavaScript设计模式(多态)
2015/11/25 Javascript
JS获取屏幕高度的简单实现代码
2016/05/24 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
2016/09/05 Javascript
基于BootStrap与jQuery.validate实现表单提交校验功能
2016/12/22 Javascript
利用NPM淘宝的node.js镜像加速nvm
2017/03/27 Javascript
canvas简单快速的实现知乎登录页背景效果
2017/05/08 Javascript
React Native AsyncStorage本地存储工具类
2017/10/24 Javascript
Vue CLI3创建项目部署到Tomcat 使用ngrok映射到外网
2019/05/16 Javascript
一文读懂vue动态属性数据绑定(v-bind指令)
2020/07/20 Javascript
Vue将props值实时传递 并可修改的操作
2020/08/09 Javascript
JavaScript实现手风琴效果
2021/02/18 Javascript
[48:53]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第一场
2014/05/26 DOTA
Python入门教程之if语句的用法
2015/05/14 Python
Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】
2019/06/18 Python
在Matplotlib图中插入LaTex公式实例
2020/04/17 Python
html5之Canvas路径绘图、坐标变换应用实例
2012/12/26 HTML / CSS
西班牙电子产品购物网站:Electronicamente
2018/07/26 全球购物
C语言中一个结构不能包含指向自己的指针吗
2012/05/25 面试题
J2EE中常用的名词进行解释
2015/11/09 面试题
新员工欢迎词
2014/01/12 职场文书
教师对学生的评语
2014/04/28 职场文书
文明家庭先进事迹材料
2014/05/14 职场文书
团党委领导干部党的群众路线教育实践活动个人对照检查材料思想汇
2014/10/05 职场文书
天鹅湖观后感
2015/06/09 职场文书
感恩教师节主题班会
2015/08/12 职场文书
房地产置业顾问工作总结
2015/10/23 职场文书
执行力心得体会范文
2016/01/11 职场文书
话题作文之生命的旋律
2019/12/17 职场文书
Python编写nmap扫描工具
2021/07/21 Python
Python中的datetime包与time包包和模块详情
2022/02/28 Python