Около 20 моделей в 1 приложении django
Я начал работу над локальным приложением для себя, которое проходит через браузер. Недавно просмотрев учебник django, я думаю, что лучше использовать django, а не просто python.
Есть одна проблема: у меня есть не менее 20 моделей, и у каждого будет много функций. Достаточно просто создать один огромный файл модели и, возможно, огромные виды тоже. Как мне разделить их?
Модели все связаны, поэтому я не могу просто сделать их в отдельных приложениях, может я?
Ответы
Ответ 1
"У меня есть как минимум 20 моделей" - это, вероятно, более одного приложения Django и больше похоже на проект Django с несколькими небольшими "приложениями"
Мне нравится разбивать предметы вокруг тем или предметных областей, которые содержат несколько (от 1 до 5) моделей. Это становится "приложением" Django и является полезной единицей повторного использования.
Общий "проект" представляет собой набор приложений, представляющих интегрированную вещь, созданную из отдельных частей.
Это также помогает в управлении проектами, поскольку каждое "приложение" может стать спринтером с выпуском на конце.
Ответ 2
Это довольно распространенная потребность... Я не могу представить, как прошиваться через файл models.py длиной 10 000 строк: -)
Вы можете разделить файл models.py
(и views.py) в pacakge. В этом случае ваше дерево проекта будет выглядеть так:
/my_proj
/myapp
/models
__init__.py
person.py
Файл __init__.py
делает папку в пакете. Единственное, что нужно получить, - это определить внутренний класс Meta
для ваших моделей, которые указывают на app_label для модели, иначе Django не сможет создать вашу схему:
class Person(models.Model):
name = models.CharField(max_length=128)
class Meta:
app_label = 'myapp'
После этого импортируйте модель в ваш файл __init__.py
, чтобы найти Django и sync db:
from person import Person
Таким образом, вы все еще можете сделать from myapp.models import Person
Ответ 3
Все модели связаны, поэтому я не могу просто превратите их в отдельные приложения можно?
Вы можете разделять их на отдельные приложения. Чтобы использовать модель в одном приложении из другого приложения, вы просто импортируете его так же, как и импортируете приложения django.contrib.
Ответ 4
Наличие 20 моделей в одном приложении может быть признаком того, что вы должны разбить его на более мелкие.
Цель приложения Django состоит в том, чтобы иметь небольшую цельную часть кода, которая идеально сочетается с nicelly.
Итак, если у вас есть сайт электронной коммерции, у вас может быть приложение shopping_cart, приложение для выставления счетов и т.д.
Имейте в виду, что в приложениях действительно нет проблем в зависимости от друг друга (хотя всегда лучше, если их можно развязать), но вы не должны иметь приложение, делающее две очень разные вещи.
Статья подсказки Django: выкладка приложения может вам помочь. Как всегда, возьмите все, что вы читаете, с солью (включая этот ответ).
Ответ 5
Вы можете разбить модели на несколько файлов. Это относится и к представлениям.
Ответ 6
Вы можете разбить их на отдельные файлы и просто импортировать в верхней части основного раздела models.py.
Если вы действительно хотите, это еще один вопрос.