我有一长串“报价”对象。
报价的价格取决于数十个子(和孙子)对象。最低的是费率/小时。
当我更改报价的子对象(例如费率/小时)时,报价价格会发生变化。
我想自动重新计算受我对其一致对象所做的任何更改影响的每个报价的价格。我正在使用 Wagtail 作为对象管理员。
我不确定如何做到这一点,我应该使用信号吗?鹡鸰钩?
我有一长串“报价”对象。
报价的价格取决于数十个子(和孙子)对象。最低的是费率/小时。
当我更改报价的子对象(例如费率/小时)时,报价价格会发生变化。
我想自动重新计算受我对其一致对象所做的任何更改影响的每个报价的价格。我正在使用 Wagtail 作为对象管理员。
我不确定如何做到这一点,我应该使用信号吗?鹡鸰钩?
Wagtail 模型和页面只是 Django 模型。
所有的孩子(和孙子)都是同一个模型吗?在这种情况下,您可以只在子模型上注册一个 post_save 信号,但一般来说,我建议您仅将 post_save 用于非变异操作,例如在对象更改时发送电子邮件,除非您考虑以下事项:
我认为更好的方法是添加一个调用price
报价的@property,而不是将价格存储在数据库中:
class Quotation(models.Model):
# Model fields here
...
@property
def price(self):
return sum([child.price for child in self.children])
这只会在您调用时计算价格quotation.price
。您可以通过在接收报价时预取子项来加快此计算。