浅谈django 模型类使用save()方法的好处与注意事项
作者:Yambo1992 时间:2021-05-17 10:43:59
如下所示:
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()
通过这样的方法,我们就可以保存到数据库了。
来源:https://blog.csdn.net/Yambo1992/article/details/81020218
标签:django,模型类,save
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
如何建设一个多语言版的ASP网站?
2009-11-26 20:36:00
python画环形图的方法
2023-02-12 09:54:24
![](https://img.aspxhome.com/file/2023/2/66742_0s.jpg)
Python使用enumerate获取迭代元素下标
2023-03-05 01:46:31
在ASP中使用SQL语句之2:用WHERE子句设置查询条件
2009-04-21 13:03:00
xhtml+css VS div+css
2008-04-07 13:00:00
Asp+Sql 对数据库的各种操作
2007-09-22 10:38:00
python ansible自动化运维工具执行流程
2021-08-07 01:54:25
![](https://img.aspxhome.com/file/2023/0/78790_0s.jpg)
(X)HTML中最多余的元素标签
2008-06-15 15:48:00
细化解析:MySQL 服务器究竟有多稳定?
2009-01-14 11:55:00
PHP基于phpqrcode类生成二维码的方法详解
2023-06-12 17:20:38
![](https://img.aspxhome.com/file/2023/0/55310_0s.png)
Python语法详解之decorator装饰器
2021-07-15 23:11:45
![](https://img.aspxhome.com/file/2023/0/72150_0s.png)
python爬虫之验证码篇3-滑动验证码识别技术
2021-08-19 07:15:38
![](https://img.aspxhome.com/file/2023/2/64702_0s.gif)
python机器学习MATLAB最小二乘法的两种解读
2022-02-19 08:00:11
![](https://img.aspxhome.com/file/2023/1/66001_0s.png)
ASP不允许同一个用户同时登陆两次
2008-06-03 13:45:00
ACCESS的参数化查询 附ASP和C#(ASP.NET)函数
2008-01-10 12:18:00
对django中foreignkey的简单使用详解
2021-09-04 21:04:20
PHP错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法
2023-11-14 16:13:53
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
2021-03-29 18:34:12
![](https://img.aspxhome.com/file/2023/1/76001_0s.png)
Python字符串的索引与切片
2021-08-17 23:46:00
Oracle针对数据库某一行进行操作的时候,如何将这一行加行锁
2009-03-06 10:37:00