重用django模型

时间:2013-10-16 02:31:25

标签: python django django-models

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

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

有更好的方法吗?我应该只创建模型类的所有归档表子类吗?

1 个答案:

答案 0 :(得分:1)

@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