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

Как решить, как разделить проект Django на приложения

У меня есть проект, который я написал в PHP/symfony, который использует 45 таблиц. Я переношу его в Python/Django.

Там вера, которую я провел годами, вы должны разделить свои проекты на кучу небольших файлов, а не на несколько огромных файлов. Из того, что я понимаю, это не странно верить. В Rails и symfony существует соглашение с одной моделью для каждого файла. Однако в Django кажется, что большинство разработчиков помещают все модели приложений в один файл.

Это имеет смысл для меня, если ваши приложения достаточно малы. Для меня это не имеет смысла для больших приложений, и у меня есть хотя бы одно большое приложение.

Из 45 таблиц, которые использует мой проект, 35 тесно связаны. У меня есть script, который импортирует данные из файлов CSV. Для каждой строки в каждом файле CSV я сохраняю 50-80 единиц данных в 30-35 разных таблиц одним махом.

Возможно, я просто думаю об этом неправильно, но мне показалось бы невероятно странным разделить мой проект на 6 или 7 различных приложений, когда почти все мои таблицы неразрывно связаны. Когда я касаюсь одного стола, я касаюсь всех 35 таблиц. Разграничения должны быть произвольными. В чем смысл этого?

Пожалуйста, простите меня, если я оторвусь от смещения, потому что я, конечно, предвзятый. У меня нет этой проблемы в symfony, и я не буду иметь ее в Rails. (Я выбрал Django из-за возможностей геоинформации GeoDjango и Python.)

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

Что мне делать?

4b9b3361

Ответ 1

Если, имеющий одну модель для каждого файла, будет идеальным ответом для вас, для этого есть приложение.

Я никогда не делал этого в масштабе 80 файлов моделей, но я, безусловно, могу указать вам на другой вопрос в стеке:
Около 20 моделей в 1 приложении django

http://djangosnippets.org/snippets/1838/

Какие проблемы с круговой ссылкой вы имеете, кстати? Если это с определениями ForeignKey, вот путь вокруг этого... http://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey

Вы также можете заглянуть в django.db.loading.get_model, но некоторые могут не согласиться на это.