【发布时间】:2015-02-27 01:34:00
【问题描述】:
我正在使用一个 django 应用程序,该应用程序的增长超出了我的预期,现在需要存档一些数据,这样它就不会减慢最终的查询速度。我的问题是,存档现有模型的最佳方法是什么?到目前为止,这是我的想法:
1 - 创建继承模型:
class OriginalModel(models.Model):
...
field = models.CharField(etc...)
...
class ArchivedModel(OriginalModel):
pass
2 - 创建一个 post_save 方法,这样每当将某些内容保存到我的原始模型时,它也会创建一个存档实例。
3 - 在我的原始模型上使用 celery 创建一个清除任务,以仅保留相关数据。
但我不确定模型继承是否会按我的预期工作。如果有人对此有任何意见,我将不胜感激。
【问题讨论】:
-
最佳解决方案取决于您项目的具体细节。一旦我像接受的答案所说的那样做了。在 Django 看来,它使很多事情变得复杂。像试图通过管理界面查找记录一样平庸:如果记录已存档,那么我必须在存档中搜索,如果没有,那么我在主表中搜索。哦,这是可以克服的,但是 ORM 级别的这种分裂很快就会蔓延到各处。随着项目的成熟,我最终恢复到只有一张桌子。您提到的性能问题应该在数据库级别解决。
标签: django python-3.x django-models