Ответ 1
В какой-то момент вашим приложениям придется спрятаться, чтобы выполнить любую работу. Вы не можете обойти это.
Итак, в моем проекте Django у меня есть несколько разных приложений, каждый со своими собственными моделями, представлениями, шаблонами и т.д. Каков хороший способ (путь "Django" ) для общения этих приложений?
Конкретным примером может служить приложение Meetings, в котором есть модель для Meetings, и у меня есть домашнее приложение, в котором я хочу отображать первые 5 встреч на главной странице.
Должен ли Home App View просто запрашивать модель приложений Meetings?
Кажется, что это пересекает какую-то линию, и в Django может быть более де-связанный способ сделать что-то подобное.
Любая помощь очень ценится!
В какой-то момент вашим приложениям придется спрятаться, чтобы выполнить любую работу. Вы не можете обойти это.
Чтобы добиться максимально возможной развязки,
У вас должно быть приложение, специфичное для проекта, которое делает все взаимосвязи между собой.
Использование сигналов от моделей для создания новых моделей в развязанных приложениях помогает. Но делать слишком много, глупо.
Если приложение Home App View просто запрашивает модель приложений Meetings?
Да, так оно и было. Если вы действительно хотите отделить вещи, вы можете сделать приложение Home
использовать общие внешние ключи и какую-то общую систему шаблонов, но на самом деле нет веской причины, если у вас нет больших планов для вашего домашнего приложения, которое можно подключить и работая с множеством других приложений Django.
Написание плотно соединенных приложений Django очень просто, и писать развязанные приложения Django очень сложно. Не распадайтесь, если у вас нет причин, и вы сэкономите много работы (и счастья!).
Если бы это был я, я бы сделал тег шаблона в приложении для собраний, который выдает желаемый результат и включал этот тег шаблона в шаблон домашнего приложения.
Таким образом, вы связываете их только в части просмотра MVC и упрощаете ее, если вы меняете свои модели в приложении собрания.
В вашем конкретном примере я бы использовал Django templatetag.
Имея templatetag "display_top_meetings" в вашем приложении Meetings и вызывая его с {{ display_top_meetings 5 }}
из вашего шаблона индекса, сначала загружайте его.
Здесь вы можете узнать больше о templatetags:
Django Официальная документация о TemplateTags
Статья B-List по написанию более тегов шаблонов
Я надеюсь, что эта помощь!
да. Я думаю, что это особенность дизайна. Все модели используют бэкэнд, поэтому вам придется выполнять дополнительную работу, чтобы иметь две модели с одинаковым именем в разных приложениях.
Проекты не должны делиться моделями