每当我从模型创建促销代码兑换对象时,我都希望更新其个人资料中的硬币计数。
创建对象时是否有运行方法,以便我可以从促销代码兑换模型更新用户个人资料中的字段?
我尝试使用init(),但不再将参数填充并保存在模型中,而我只是想运行额外的代码,而不是添加自定义字段。
我看到了提到的信号文件,但是通过模型作为方法自动完成会不会更简单?
class Promo_Code_Redemption(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
amount = models.DecimalField(max_digits=9,decimal_places=2)
date = models.DateTimeField(default=timezone.now)
code = models.ForeignKey(Promo_Code, on_delete=models.CASCADE)
code_text = models.TextField()
revenue_type = "Promo code"
def __str__(self):
return self.code.code
您可以覆盖Promo_Code_Redemption save()方法:
# recommended naming convention for
# class names in python is UpperCaseCamelCase
class Promo_Code_Redemption(models.Model):
...
def save(self, *args, **kwargs):
# you can check if object just created by comparing "pk" attr to None
# you can also use _state attr see doc link below
is_created = self.pk is None
super(Promo_Code_Redemption, self).save(*args, **kwargs)
if is_created:
# do something here
print('is created')
型号_state attr
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句