Каждое «приложение» должно быть небольшим - единый объект многократного использования плюс несколько связанных таблиц. У нас есть около 5 плюс/минус 2 таблицы для каждой модели приложения. Большинство наших полдюжины приложений меньше 5 таблиц. В модели есть нулевые таблицы.
Каждое приложение должно быть спроектировано так, чтобы быть одной многоразовой концепцией. В нашем случае каждое приложение является частью общего сайта; приложения могут быть удалены и заменены отдельно.
Действительно, это наша стратегия. По мере расширения и развития наших требований мы можем удалять и заменять приложения независимо друг от друга.
Это нормально, что приложения зависят друг от друга. Однако зависимость должна ограничиваться очевидными вещами, такими как «модели» и «формы». Кроме того, приложения могут зависеть от имен в URL друг друга. Следовательно, ваш именованный URL должен иметь форму типа «приложение-вид», поэтому функция reverse
или тег {% url %}
могут найти их правильно.
Каждая заявка должна содержать это собственные команды пакетной обработки (как правило, с помощью формального командования, которые можно найти в django-admin
сценария.
Наконец, все это более сложный, чем простой модели или формы, которая разделяет, вероятно, не принадлежит для любого приложения, но для этого требуется отдельная разделяемая библиотека. Например, мы используем XLRD, но обертываем его части в нашем собственном классе, так что это больше похоже на встроенный модуль csv
.Эта оболочка для XLRD не является подходящей частью любого отдельного приложения, это отдельный модуль, вне приложений Django.
Согласен ... То, что я узнал от работы над pinax и satchmo, неоценимо – Jiaaro