关于抽象模型

时间:2015-09-19 12:04:29

标签: python django

我的 app_templ 模型定义:

models.py

class TableName(models.Model):
    name = models.CharField(max_length=100)
#
class TableAbstract(models.Model):
    ...
    class Meta:
            abstract = True

它可以被其他应用程序使用:

app1 / models.py

from app_templ.models import TableAbstract
class Table1(TableAbstract):
    ...

app2 / models.py

from app_templ.models import TableAbstract
class Table2(TableAbstract):
    ...

依旧......

在TableName中,有必要注册后继者的模型(表)的名称。

如何通过仅在 app_templ 应用中进行编码来制作?

1 个答案:

答案 0 :(得分:0)

从技术上讲,你所描述的听起来不错。您正在定义一个抽象模型,然后使用它来创建多个模型。您需要导入它,并指定您要创建这些表(使用上面的示例)。您应该仔细考虑为什么您在不同的应用程序中多次使用相同的模型(这实际上应该是一个应用程序吗?),但理论上它很好。

我不太明白你的第一个定义,你应该定义你的模型:

class TableBaseClass(models.Model):
    name = models.CharField(max_length=100)

    class Meta:
            abstract = True

abstract = True意味着模型不是在数据库中创建的(docs)所以为了清楚起见,您可以将此文件存储在与创建表的常规模型类不同的位置。

此代码:

from app_templ.models import TableAbstract
class Table1(TableAbstract):
    ...

应位于您应用中的models.py