Где разместить доменные объекты в моем приложении
Так что в моем приложении на Python django архитектура структурирована так, что она разделена на разные приложения. Одно приложение для users
один для finance
, так далее.
Каждое приложение имеет следующую базовую структуру:
app_name
models
services
tests
Я разрабатываю новую функцию для поддержки промо-кодов. Промо-коды позволят пользователю получить скидку на предстоящий счет (ы). Итак, я создал PromoCodeModel
и PromoCodeService
, Внутри сервиса мне нужно проверить, имеет ли пользователь право использовать этот код. Кажется, что эта логика может стать довольно сложной, и я надеялся инкапсулировать проверки приемлемости в свой собственный класс - что-то вроде PromoCodeEligibility(user, promo_code)
,
Мне было интересно - где это будет принадлежать? Должен ли я создать новый PromoCodeEligibilityService
? Или я должен создать новую папку с именем domain
и сделать это объектом домена? Я мог бы также перенести эту логику в model
Само по себе, но иметь действительно толстые модели, кажется, больше анти-паттерном для меня. Мысли?
1 ответ
Я мог бы также перенести эту логику в саму модель, но наличие действительно толстых моделей кажется мне скорее анти-паттерном. Мысли?
На самом деле это предпочтительный способ в Джанго. Вы можете прочитать больше об этом здесь и здесь и здесь.
PS. Я почти уверен, что в django docs было несколько предложений на эту тему, но я не могу его найти.