gpt4 book ai didi

python - 归档 Django 模型

转载 作者:太空宇宙 更新时间:2023-11-03 15:15:21 25 4
gpt4 key购买 nike

我正在创建一个在线订单系统,用于定期销售商品(蔬菜盒送货上门)。我有一个“订单”模型(简化)如下:

class BoxOrder(models.Model):
customer = models.ForeignKey(Customer)
frequency = models.IntegerField(choices=((1, "Weekly"), (2, "Fortnightly)))
item = models.ForeignKey(Item)
payment_method = models.IntegerField(choices=((1, "Online"), (2, "Free)))

现在我的“客户”可以更改订单的频率或正在出售的“商品”(比如“胡萝卜”),甚至可以一起删除订单。

我想做的是为该周处理的所有订单创建每周“备份”,这样我就可以看到每周售出的所有订单的历史图表。仅将订单存档到另一个表/数据库的问题是,如果由于某种原因删除了一个项目(比如我不再卖胡萝卜),那么由于 ForeignKeys

使用 Django 创建归档系统的最佳解决方案是什么——这样历史上每周的订单都可以在 Django 管理中查看,并且它们是“静态的”(即独立于是否删除任何其他对象)?我考虑过创建一个新的“平面”BoxOrderArchive 模型,然后使用 cron 作业移动给定一周的订单,例如:

class BoxOrderArchive(models.Model):
customer_name = models.CharField(max_length=20)
frequency = models.IntegerField()
item_name = models.CharField() # refers to BoxOrder.item.name
item_price = models.DecimalField(max_digits=10, decimal_places=2) # refers to BoxOrder.item.price
payment_method = models.IntegerField()

但我觉得这可能需要做很多额外的工作。在我走那条路之前,如果知道是否有人有任何其他解决方案会很棒吗?

谢谢

最佳答案

这是一个相当宽泛的话题,我不会具体回答你的问题,但我对你的建议是不要删除或移动任何东西。您可以向名为 is_deletedis_active 或类似内容的 Item 添加一个 bool 字段,并在删除项目时使用该标志。这样你就可以

  • 保留您的 ForeignKey
  • 对非事件项目有不同的表示
  • 恢复和以前删除的项目(例如,您可能想在几个月后再次出售胡萝卜 - 这样您的统计数据将在全年保持一致)

同样的建议也适用于 BoxOrder 模型。不要将行移到不同的表中,只需添加一个 is_archived 字段并将其设置为 True

关于python - 归档 Django 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21544355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com