django 模型类使用save()方法的好处与注意事项

本文讨论了在Django模型中使用save()方法时,字段值生成顺序的重要性。off_price、need_pay和sale_push_money等字段的计算有严格的先后依赖关系,顺序错误可能导致结果不正确。开发者需要注意这一细节,确保数据的准确无误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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()将其填充到
对应的字段,就会使消费记录因为关联性而发生不希望的变动。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值