Подтвердить что ты не робот

Использование моделей django в приложениях?

Итак, в моем проекте Django у меня есть несколько разных приложений, каждый со своими собственными моделями, представлениями, шаблонами и т.д. Каков хороший способ (путь "Django" ) для общения этих приложений?

Конкретным примером может служить приложение Meetings, в котором есть модель для Meetings, и у меня есть домашнее приложение, в котором я хочу отображать первые 5 встреч на главной странице.

Должен ли Home App View просто запрашивать модель приложений Meetings?

Кажется, что это пересекает какую-то линию, и в Django может быть более де-связанный способ сделать что-то подобное.

Любая помощь очень ценится!

4b9b3361

Ответ 1

В какой-то момент вашим приложениям придется спрятаться, чтобы выполнить любую работу. Вы не можете обойти это.

Ответ 2

Чтобы добиться максимально возможной развязки,

У вас должно быть приложение, специфичное для проекта, которое делает все взаимосвязи между собой.

Использование сигналов от моделей для создания новых моделей в развязанных приложениях помогает. Но делать слишком много, глупо.

Ответ 3

Если приложение Home App View просто запрашивает модель приложений Meetings?

Да, так оно и было. Если вы действительно хотите отделить вещи, вы можете сделать приложение Home использовать общие внешние ключи и какую-то общую систему шаблонов, но на самом деле нет веской причины, если у вас нет больших планов для вашего домашнего приложения, которое можно подключить и работая с множеством других приложений Django.

Написание плотно соединенных приложений Django очень просто, и писать развязанные приложения Django очень сложно. Не распадайтесь, если у вас нет причин, и вы сэкономите много работы (и счастья!).

Ответ 4

Если бы это был я, я бы сделал тег шаблона в приложении для собраний, который выдает желаемый результат и включал этот тег шаблона в шаблон домашнего приложения.

Таким образом, вы связываете их только в части просмотра MVC и упрощаете ее, если вы меняете свои модели в приложении собрания.

Ответ 5

В вашем конкретном примере я бы использовал Django templatetag.

Имея templatetag "display_top_meetings" в вашем приложении Meetings и вызывая его с {{ display_top_meetings 5 }} из вашего шаблона индекса, сначала загружайте его.

Здесь вы можете узнать больше о templatetags:

Django Официальная документация о TemplateTags

Статья B-List по написанию более тегов шаблонов

Я надеюсь, что эта помощь!

Ответ 6

да. Я думаю, что это особенность дизайна. Все модели используют бэкэнд, поэтому вам придется выполнять дополнительную работу, чтобы иметь две модели с одинаковым именем в разных приложениях.

Проекты не должны делиться моделями