Django 1.8:如何使用来自不同应用程序的Model?

时间:2015-05-31 12:39:56

标签: python django django-models django-1.8

我的问题是我想创建像common-application这样的东西(这也可以是标准的Python模块),例如:

  • Model_1
  • Model_2
  • Model_3

并创建application_1application_2,其中common-application使用的模型例如:

  • application_1

    • Model_1
    • Model_2
    • Model_4 - app特定的附加模型
  • application_2

    • Model_1
    • Model_2
    • Model_3

我真的不知道models.pyapps.py应该是什么样子......:/

有可能吗?

PS。如果我想写DATABASE_ROUTER在两个数据库之间拆分这个应用程序会让这个问题真的无法解决?

3 个答案:

答案 0 :(得分:2)

您可以将common_application的models.py文件中的通用模型作为抽象模型实现,方法是将以下内容添加到模型的类中:

class Meta:
    abstract = True

然后,在其他应用程序中,您可以导入常见模型,如下所示:

from common_application.models import Model_1, Model_2, Model_3

然后实例化将从抽象模型类派生的模型类:

class Model_1a(Model_1):

可以找到有关Model类继承的更多详细信息here

答案 1 :(得分:0)

application1
    models (directory - package)
        __init__.py
        model1.py
        model2.py
        model3.py 

进入 init .py文件,您可以从型号* .py

导入所有模型
from model1 import *
from model2 import *
from model3 import *

使用Meta模型,您可以设置db_tablespace(https://docs.djangoproject.com/en/1.8/ref/models/options

答案 2 :(得分:0)

如果要将模型从一个应用程序迁移到另一个应用程序 例如,第一个应用程序模型如下所示 This is the first modal that I want to use in the different app look like this

在另一个应用程序中的第二个模型中,这取决于您要在何处使用该模式,就我而言,我在view.py中使用该模型来检索信息 In this view import your model by writing from {yourappname}.models import {modelname}