Я вижу в документации Django:
Справочник по экземпляру модели: создание объектов< /сильный>
У вас может возникнуть соблазн настроить модель, переопределив метод
__init__
. Однако в этом случае постарайтесь не изменять сигнатуру вызова, так как любое изменение может помешать сохранению экземпляра модели.
Вместо переопределения__init__
попробуйте использовать один из следующих подходов:
- Добавьте метод класса в класс модели.
- Добавьте метод в пользовательский менеджер (обычно предпочтительнее)
Почему второе решение «обычно предпочтительнее»?
В ситуации, когда у меня есть модель B
, которая расширяет модель A
через отношение OneToOne
, и я хочу создать метод, генерирующий объект B
, который также генерирует соответствующий объект A
, как «лучше» использовать пользовательский менеджер как было предложено, учитывая, что я, вероятно, не буду использовать этот менеджер ни для чего, кроме того, что предоставляется менеджером по умолчанию?