Django - разделение функциональности на приложения - PullRequest
2 голосов
/ 15 июля 2011

Я работаю над подмножеством функциональных возможностей моих проектов и пытаюсь сосредоточиться на том, чтобы разбить мой проект на специализированные приложения (в отличие от одного монолитного приложения, которое делает все это).После некоторого приближения я хочу держать каждое приложение напряженным и сфокусированным.Однако я не совсем уверен, как лучше разделить мой код.

Общая функциональность состоит из трех основных компонентов:

  1. Сотрудники и связанная с ними информация.
  2. Сертификаты / обучение сотрудников и информация о сертификатах.В основном разные типы обучающих сотрудников могут получать и связанную с ними информацию.
  3. Сертификаты сотрудников (это связывает сертификаты с сотрудниками).

У меня есть три основные модели: Сотрудник, Сертификат и Сертификация (которыеразделяет отношения как с сотрудниками, так и с сертификатами).

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

Я мог бы:

  1. Пакет сертификатов в приложении для сотрудников или сертификатов
  2. Дайте сертификатам свое собственное приложение

Что вы скажете?Этот сценарий требует более одного приложения?И если да, то как следует разделить три функциональных требования, чтобы каждое из них было жестким и сфокусированным?

Ответы [ 2 ]

2 голосов
/ 15 июля 2011

Я бы посоветовал хранить их в одном приложении: чтобы все ваши модели помещались в один файл models.py, и, скорее, иметь несколько views.py (скажем, для каждого функционального блока). Таким образом, вы можете легко управлять своими моделями, а также при необходимости нажимать на нужный файл представлений.

Хранение в нескольких приложениях в этом случае было бы излишним, поскольку нет четкого разграничения между функциями.

2 голосов
/ 15 июля 2011

Я бы держал их всех в одном приложении. Это слишком простое приложение (лично) для меня, чтобы разбить его. Я бы использовал django.contrib.auth.models.Users и использовал его в структуре, которая выглядит следующим образом.

Model Diagram

Чтобы воспользоваться преимуществами структуры пользователей, вам необходимо расширить модель User. Stackoverflow отвечает здесь и официальной документации здесь .

НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...