4

我有一个带有一堆模型和模板的应用程序来执行某个任务(它被称为“用户访问审查”,但这并不重要 - 该应用程序被称为“uar”)。当用户完成他们的任务后,我们希望将主要模型中的数据归档到我们所谓的“历史”表中。这些表在结构上与原始“uar”表相同,但可能位于另一个数据库中,也可能位于同一数据库中。但是,它们将是只读的,除非将它们归档到这些历史表中的过程,并且可能是在一定年数后使项目过期的任务。

因为我想要完全相同的模型结构但名称不同,所以我想我只需要制作一个名为“uar_history”的应用程序并在两个应用程序之间对 models.py 文件进行符号链接。但是当我尝试syncdb新模型时,我收到很多关于模型没有验证的抱怨,因为related_name外键上的反向链接。

有更好的方法吗?我是否应该将所有存档表都设为模型类的子类?

4

1 回答 1

2

@Brandon 给出了正确的答案,您应该为共享定义使用通用抽象模型。它们可以在同一个文件中,也可以在单独的模型文件中(我选择commoncurrenthistory作为此示例的应用程序):

常见/models.py

class CommonPostModel(models.Model):
    title = models.CharField(max_length=255)
    body = models.TextField()

    class Meta:
        abstract = True

当前/models.py

class CurrentPostModel(CommonPostModel):
    pass

历史/models.py

class ArchivePostModel(CommonPostModel):
    pass
于 2013-10-16T04:52:16.717 回答