Где разместить бизнес-логику в django

Например, Account 1 -> * User -> 1 Authentication 1 учетная запись имеет несколько пользователей, и у каждого пользователя будет 1 аутентификация.

Я исхожу из фона java, поэтому обычно

  1. определяю эти классы как java beans (т.е. просто геттер и сеттер, без привязки логики)
  2. создать класс AccountManager ejb, определить метод create_account (с 1 учетной записью, список пользователей)
  3. подготовить данные в веб-слое, затем передать данные в AccountManager ejb, например: accountManager.createAccount (account, userList)

Но в django фреймворк рекомендует помещать логику предметной области в классы модели (уровень строк) или связанные классы менеджеров (уровень таблицы), что немного затрудняет работу. Да, это нормально, если ваша логика включает только одну таблицу, но в реальном приложении обычно каждый шаг будет включать несколько разных таблиц или даже баз данных, так что мне делать в этом случае?

Поместить логику в представление ? Я вообще не думаю, что это хорошая практика. или даже перезаписать метод сохранения в классе модели, передав дополнительные данные с помощью ** kwargs? тогда бэкэнд выйдет из строя.

Надеюсь, это иллюстрирует мою путаницу с тем, где следует разместить бизнес-логику в приложении django.

17
задан ahsteele 11 April 2011 в 03:25
поделиться