2009-10-22 5 views
4

Каков подходящий способ использования моделей из других приложений django в моем приложении? Например, следует ли просто перейти к моделям других приложений и добавить свои функциональные возможности для эффективного взаимодействия двух приложений?Как использовать модели django из других приложений?

Должен ли я подклассировать модели с использованием прокси-модели django для добавления моей специфичной для приложения функции? Однако этот метод не позволяет использовать эту добавленную функциональность в родительском приложении.

Должен ли я просто импортировать модель и создавать функции библиотеки для обработки этой дополнительной функциональности?

Спасибо! Pete

+0

Мне было интересно в последнее время, если правдоподобно/желательно использовать RESTish API для разговора между приложениями, так же, как если бы мы разговаривали с сервисами издалека ....? – jMyles

ответ

2

Существуют определенные категории приложений, которые в конечном итоге соединяются в других приложениях. Хорошим примером является django.contrib.auth: если вы используете модель пользователя Django, вы зависите от этого приложения, и ваши собственные приложения сочетаются с ним.

В этом сценарии нет ничего плохого. Я склонен думать об этом меньше как о связи, а о зависимости. Ваше приложение зависит от доступных django.contrib.auth. Это естественная вещь, потому что вам нужна эта функциональность. Вы всегда можете заменить это приложение другим приложением, которое предоставляет те же интерфейсы, которые вы используете в настоящее время ...

Теперь, если у вас есть два ваших собственных приложения, и им нужны знания о моделях друг друга, я могу думать о двух сценарии:

  1. Вам нужна третья приложение для ваших общих моделей

  2. Они должны быть только одна заявка (редко, вы были причины, чтобы сделать их отдельно, чтобы начать с!)

Как правило, у меня есть приложение core (так же, как есть django.core), где я сохраняю код, который является общим для приложений в моем проекте. Если модели разных приложений зависят друг от друга, они перемещаются в это приложение.

Теперь также возможно, что ваши два приложения действительно являются только одним приложением, но это не должно быть мышью по умолчанию. Монолитные приложения - очень плохая вещь (TM).

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