Не уверен, что если вы прочитали раздел Managers в Django, похоже, это решает вашу текущую ситуацию. При условии, что у вас определена следующая модель Account
, User
является встроенной.
# accounts/models.py
class AccountManager(models.Manager):
def create_account(self, account, user_list):
...
class Account(models.Model):
objects = AccountManager()
Не стесняйтесь разделять код менеджера в отдельном файле, если он становится слишком большим. По вашему мнению:
# views.py
from accounts.models import Account
Account.objects.create_account(account, user_list)
Бизнес-логика все еще находится в моделях.
EDIT
Ключевое слово здесь переопределить, а не перезаписать. Если вы переопределите метод сохранения модели, вы должны помнить, что любые операции создания, обновления из вашего веб-приложения и администратора будут использовать эту новую функциональность. Если вы хотите, чтобы эта бизнес-логика появлялась только один раз в определенном представлении, лучше не допускать ее в save
.
Полагаю, вы можете поместить свою бизнес-логику в отдельный класс. Вам придется создавать экземпляры этого класса каждый раз, когда вам нужно запустить свою бизнес-логику. Кроме того, вы можете поместить свою бизнес-логику как статическую функцию в этот новый класс, если хотите пропустить подход ООП.