我有一个报价表,该表根据许多参数生成价格。价格是根据其他多个表中的数据生成的,例如:费用,优惠券,促销等。处理价格的最佳方法是使用ForeignKeys。这是表格(所有_id字段均为外键):
Quote
#user input fields
charge_id
promotion_id
coupon_id
tariff_id
一切看起来不错。每个报价记录都有非常详细的数据,可以告诉您价格来自何处。问题是它所依赖的表中的数据不能保证保持不变。它可能会被删除或更改。假设报价中有一个关税的外键,然后被更改。与之关联的记录不再讲述相同的故事。您如何处理这样的事情?如果您推荐一些与此相关的理论,将不胜感激。
答案 0 :(得分:1)
如果您不希望通过更改外键相关对象来更改报价值,最好的选择是在Quote类中添加各个外键模型的所有字段。
然后,在计算Quote
的值时,您将从所有(现在不相关)的对象中获取数据并将其保存在Quotes表中。
现在,对Foreign表的任何更改都不会影响Quotes表。
另一种选择是使用类似django-simple-history的库,该库可以跟踪模型随时间的变化。