我应该使用什么信号来更改Django相关对象
我得到了3个模型(简化): 每次保存取款时,我必须执行以下操作:我应该使用什么信号来更改Django相关对象,django,signals,models,database-relations,Django,Signals,Models,Database Relations,我得到了3个模型(简化): 每次保存取款时,我必须执行以下操作: client.PersonalAccount.balance = client.PersonalAccount.balance - withdrawal.amount client.PersonalAccount.save 我应该用什么信号来做预保存,后保存还是初始化的?我想使它易于调试。如果任何帐户操作失败,则不应保存取款。 我也完全不确定我的关系语法是否正确,因此,如果有人对此冷淡地澄清..从逻辑上讲,一旦取出,数量必须减少
client.PersonalAccount.balance = client.PersonalAccount.balance - withdrawal.amount
client.PersonalAccount.save
我应该用什么信号来做<代码>预保存,后保存
还是初始化
的?我想使它易于调试。如果任何帐户操作失败,则不应保存取款。
我也完全不确定我的关系语法是否正确,因此,如果有人对此冷淡地澄清..从逻辑上讲,一旦取出,数量必须减少。因此,
post_save
信号听起来很合适。从技术上讲,您也可以在此处使用pre_save
,而不会遇到任何问题
但是,由于这些是异步调用,您应该非常小心,因为它们的行为不正常。假设您每分钟执行50个请求(例如),您永远不知道哪个请求首先完成(django不保证处理请求的顺序)。在这里,您需要仔细管理异步调用
或者,您可以简单地重写save()
model方法并执行所需的操作
def save(obj, *args, **kwargs):
super(ModelClass, self).save(*args, **kwargs)
# update your persoanl account
obj.PersonalAccount.save()
这比异步调用要好我目前使用的是draw.create(var1,var2…)方法这是一个好的实践吗?
def save(obj, *args, **kwargs):
super(ModelClass, self).save(*args, **kwargs)
# update your persoanl account
obj.PersonalAccount.save()