重用 django 模型

Pau*_*lin 5 python django django-models

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

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

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

Kev*_*one 4

@Brandon 给出了正确的答案,您应该为共享定义使用通用的抽象模型。它们可以位于同一文件或单独的模型文件中(我选择commoncurrent、 和history作为本示例的应用程序):

常见/models.py

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

    class Meta:
        abstract = True
Run Code Online (Sandbox Code Playgroud)

当前/models.py

class CurrentPostModel(CommonPostModel):
    pass
Run Code Online (Sandbox Code Playgroud)

历史/models.py

class ArchivePostModel(CommonPostModel):
    pass
Run Code Online (Sandbox Code Playgroud)