我有一个模型:
PRODUCT_EXPIRY 型号:
product_id = model.IntegerField()
expires_in = model.IntegerField() --days count
另一个模型为:
产品:
product_id = model.IntegerField()
expires_in = model.IntegeField(blank=True) --days count
name = model.CharField()
price = model.FloatField()
...other fields
我想要的是,让商店添加产品,这里expires_in的产品(天数)是可选的,他可以选择在添加产品时手动添加,或者如果他没有,则从product_expire模型输入过期时间,映射通过product_id.
但请考虑以下情况:
- Milk X 有 3 天的有效期。
- 牛奶 Y 有 60 天的保质期。
- 可可粉的保质期为 6 个月。
当商店输入产品时,假设他至少在生产日期后 10 天后收到它。因此expire_in,添加可可粉时应为60-10 = 50 days有效期大于 30 天的产品。由于牛奶车每天运送牛奶,因此有效期少于 30 天的产品将具有相同的有效期,没有任何变化,即为expires_in牛奶 X 添加牛奶时3 days。我该怎么做?Product模型expired_in必须是外键吗?
例如:假设我们知道可乐在 1 个月后过期,那么如果商店忘记输入过期日期,则添加的自动过期日期应为 20 天。因此,如果产品即将过期,我可以通知商店。但对于牛奶到期添加应无任何变化。
或者我是否必须通过覆盖产品模型的保存功能为此构建自定义算法?
我现在的想法是:
- 将其保留为
IntegerField并添加另一个字段为DateTime,如果输入了日期时间字段,则使用该字段,否则使用该expired_in字段,并覆盖保存功能。 - 稍后通过 pandas 或一些自定义 python 脚本处理空白值。但是有简单的方法吗?