Данный документ содержит рекомендации по разработке на django.
Не пишите всё монолитно в пределах одного приложения. Для реализаций, имеющих разную суть, изолируйтесь на разные приложения.
Например:
- Пользователи системы — приложение users;
- Магазин — приложение shop;
- Заказы — приложение order.
Многие разработчики пытаются использовать другую ORM вместо встроенной, поставляемой фреймворком. Забудьте об этом, так как это ужасная и даже глупая практика.
Фреймворк имеет свою прекрасную и отличную ORM, которая, как минимум, является его неотъемлемой частью; за счёт чего, при её выпиливании, вы просто ломаете фреймворк.
Этот механизм позволит Вам взаимодействовать всегда с актуальными данными базы, не создавая коллизий и ломающих перерасчётов.
Помните, что ORM это как минимум ещё 1 уровень абстракции, который при сложных вычислениях может повлиять на производительность.
Кроме того, в сложных запросах на выборку с группировкой или объединением, а также подобным им, может генерировать не совсем отзывчивые sql-запросы, что, в таком случае лучше воздержаться от ORM и использовать "сырой" sql.
В джанге есть прекрасная и великолепная встроенная админка, но увы для продакшена она, мягко говоря, не очень. Почему? Жутко не оптизимированная.
Базовый случай: если у Вас есть связи между моделями и созданные по ним записи в админке, то просто гляньте explain (описание sql запросов). Его можно посмотреть через пакет django-debug-toolbar. Там Вы увидите, как админка плодит кучу лишних запросов.
Это одна из причин, почему встроенная админка используется лишь для dev-среды, а в проде её убирают. Конечно, Вы можете заморочиться и исправить её костыли, но помните, что порой исправление чего-либо намного сложнее, чем написание с нуля.
Всё равно. Не имеет значение что Вы используете, больше ценится то, что Вы умеете использовать в общих ситуациях готовые решения, а в исключительных писать кастомную логику.
Если Вам не знакомо понятие "Вычисление QuerySet" или Вы не знаете разницы между функцией len() и методом count() у orm-объекта, то Вам нужно прочитать эту документацию. Большой плюс, если Вы знаете тонкости этой работы, да и в целом, это очень полезное руководство, если хотите разбираться во фреймворке лучше.