Где разместить доменные объекты в моем приложении

Так что в моем приложении на Python django архитектура структурирована так, что она разделена на разные приложения. Одно приложение для usersодин для finance, так далее.

Каждое приложение имеет следующую базовую структуру:

app_name
    models
    services
    tests

Я разрабатываю новую функцию для поддержки промо-кодов. Промо-коды позволят пользователю получить скидку на предстоящий счет (ы). Итак, я создал PromoCodeModel и PromoCodeService, Внутри сервиса мне нужно проверить, имеет ли пользователь право использовать этот код. Кажется, что эта логика может стать довольно сложной, и я надеялся инкапсулировать проверки приемлемости в свой собственный класс - что-то вроде PromoCodeEligibility(user, promo_code),

Мне было интересно - где это будет принадлежать? Должен ли я создать новый PromoCodeEligibilityService? Или я должен создать новую папку с именем domain и сделать это объектом домена? Я мог бы также перенести эту логику в model Само по себе, но иметь действительно толстые модели, кажется, больше анти-паттерном для меня. Мысли?

1 ответ

Я мог бы также перенести эту логику в саму модель, но наличие действительно толстых моделей кажется мне скорее анти-паттерном. Мысли?

На самом деле это предпочтительный способ в Джанго. Вы можете прочитать больше об этом здесь и здесь и здесь.

PS. Я почти уверен, что в django docs было несколько предложений на эту тему, но я не могу его найти.

Другие вопросы по тегам