Где должен находиться код менеджера django?

Это довольно простой вопрос о шаблонах django. Мой менеджерский код обычно живет в models.py, но что происходит, когда models.py действительно огромна? Есть ли другой альтернативный шаблон, позволяющий вашему менеджерскому коду жить в models.py для удобства обслуживания и избежать циклического импорта?

Можно задать вопрос о том, почему models.py настолько велика, но давайте просто предположим, что размер и широта полезности оправданы.

4 Solutions collect form web for “Где должен находиться код менеджера django?”

Я предпочитаю сохранять свои модели в models.py и менеджерах в менеджерах.py (forms in forms.py) все в одном приложении. Для более общих менеджеров я предпочитаю хранить их в core.managers, если их можно повторно использовать для других приложений. В некоторых наших больших приложениях с моделями / modelname.py, которые будут содержать менеджер и код модели, который не кажется плохим.

Лучше всего использовать большой набор моделей – использовать модули django в ваших интересах и просто создать папку с именами моделей. Переместите ваши старые models.py в эту папку моделей и переименуйте ее __init__.py . Это позволит вам разделить каждую модель на более конкретные файлы внутри этой папки модели.

Затем вам нужно будет импортировать каждую модель в пространство имен __init__.py .

Так, например, вы можете разделить его на:

 yourapp/ models/ __init__.py # This file should import anything from your other files in this directory basic.py # Just an example name morespecificmodels.py # Just an example name managers.py # Might want to separate your manager into this 

Тогда ваш __init__.py может просто быть:

 from basic import * # You should replace * with each models name, most likely. from managers import YourManager # Whatever your manager is called. 

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

Надеюсь это поможет.

Я всегда занимаю место у менеджеров. Если у вас есть проблема с циклическим выпуском, помните, что a) вы можете ссылаться на класс модели для менеджера на self.model и b) вы можете импортировать внутри функций.

То, что я делал при создании приложений Django, заключалось в том, чтобы создать файл [modelname] .py только с конкретным кодом модели, кодом менеджера и иногда формировать код и использовать файл __init__.py для импорта, затем все в каталоге моделей. Это помогло мне по-прежнему поддерживать ее.

  • Таблица Django с миллионом строк
  • django - модель unicode () показать атрибут объекта foreignkey
  • Обработка состояния гонки в model.save ()
  • Использование приложения планировщика Django с вашими собственными моделями
  • Ошибка "django.core.exceptions.ValidationError"
  • Ошибка Django syncdb: одна или несколько моделей не проверяли
  • Как реализовать предложение о наличии в sqlite django ORM
  • forms.ModelForm не сохраняет поля ManyToMany
  • Python - лучший язык программирования в мире.