Django为同一模型创建不同的表

Posted

技术标签:

【中文标题】Django为同一模型创建不同的表【英文标题】:Django creating different tables for same model 【发布时间】:2014-04-11 11:03:30 【问题描述】:

之前我在没有任何框架的情况下使用 php,用于面向服务的 Web 应用程序,我必须在其中存储大量要存储的数据,这些数据可以轻松删除并且易于备份;所以我编写了代码,每个月将相同的数据存储在相同架构的不同表中,这样就可以轻松地运行删除表查询或创建表备份,而不是对整个表运行查询。

+------------------+---------------------------+
| data_2014_01_01  |  will store data of jan   |
| data_2014_02_01  |  will store data of feb   |
| data_2014_03_01  |  will store data of march |
+------------------+---------------------------+

等等。

由于我正在将代码迁移到 django,我怎样才能完成相同的事情,因为 django ORM 为要存储在这里的每个数据项创建了一个表,因此删除了现在只能识别的无用旧记录按时间戳记太费时间,备份也很痛苦,因为表的大小非常大。

请在这里给我一些技巧,欢迎任何想法。

提前致谢。

【问题讨论】:

【参考方案1】:

这是一个选项。

由于您要迁移到 Django,我建议您遵循最佳实践并立即开始使用 South:

South 是一个提供一致、易于使用和 Django 应用程序的与数据库无关的迁移。

另外,我会将您的所有表格合并为一个带有时间戳字段的表格 - 这样应用程序可以更轻松地与您的数据“对话”。

那么,除了设置South之外,还有一些步骤只需要做一次:

创建您的架构 - 定义您的模型,创建初始架构迁移并运行它。 编写一个data migration,它将数据从多个data_%Y_%m_%d 表移动到由您的架构迁移表新创建的。运行数据迁移。

还可以看看django-parting 项目——它看起来不是很成熟并且可以使用,但是,至少,看看他们如何管理每个模型的多个表(基本上它有点像Model Manager“魔法” )。

希望对您有所帮助。

【讨论】:

以上是关于Django为同一模型创建不同的表的主要内容,如果未能解决你的问题,请参考以下文章

如何直接查询Django为ManyToMany关系创建的表?

django 模型创建连接到 mssql

django模型:为已存在的表建立模型

Django多重继承与不同的表

如何删除 Django 模型的表前缀?

Django5_model模型