2015-05-31 3 views
0

Моя проблема, я хочу, чтобы создать что-то вроде common-application (это может быть также стандартный модуль Python) с, например:Django 1.8: Как использовать модель из разных приложений?

  • Model_1
  • Model_2
  • Model_3

А также создать application_1 и application_2, где используются модели от common-application, например:

  • application_1

    • Model_1
    • Model_2
    • Model_4 - приложение конкретные дополнительные модели
  • application_2

    • Model_1
    • Model_2
    • Model_3

Неужели я не знаю, как models.py и apps.py должен выглядеть ..:/

Возможно ли это?

PS. И если я хочу написать DATABASE_ROUTER, чтобы разделить эти приложения между двумя базами данных, эта проблема действительно невозможна?

+0

Я получил эту проблему, потому что я 40+ общие модели для создания:/ – WBAR

ответ

1

Вы можете реализовать общие модели в models.py файле common_application «s как абстрактная модель, добавив следующее классе модели:

class Meta: 
    abstract = True 

Затем, в других приложениях вы можете импортировать общие модели как так:

from common_application.models import Model_1, Model_2, Model_3 

А затем создать экземпляр модели классов, которые происходят от абстрактного класса модели:

class Model_1a(Model_1): 

Более подробную информацию о классе модели наследования можно найти here

+0

и они будут созданы 'Джанго SyncDB '? как насчет миграций? Может быть, в 'common' устанавливают их как' abstract = True' и в 'app_1' просто наследуют их? – WBAR

+0

Пока 'common_application' является частью вашего' INSTALLED_APPS' в вашем файле настроек, syncdb должен создавать эти модели. Почему вы хотите сделать их абстрактными? – OrenD

+0

, потому что я не хочу создавать их в 'common_app' – WBAR

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

В инициализации .py файлы можно импортировать все модели от модели *.ру

from model1 import * 
from model2 import * 
from model3 import * 

Также с моделями Meta вы можете установить db_tablespace (https://docs.djangoproject.com/en/1.8/ref/models/options)

Смежные вопросы