Подтвердить что ты не робот

Около 20 моделей в 1 приложении django

Я начал работу над локальным приложением для себя, которое проходит через браузер. Недавно просмотрев учебник django, я думаю, что лучше использовать django, а не просто python.

Есть одна проблема: у меня есть не менее 20 моделей, и у каждого будет много функций. Достаточно просто создать один огромный файл модели и, возможно, огромные виды тоже. Как мне разделить их?

Модели все связаны, поэтому я не могу просто сделать их в отдельных приложениях, может я?

4b9b3361

Ответ 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.

Если вы действительно хотите, это еще один вопрос.