Это из-за чистоты кода, если говорить о чистоте философской - сервис уровнем выше, который вызовет и методы модели, и внешние интерфейсы. Более прагматичный подход - Django изначально специально имеет открытый API к собственному ORM на трёх уровнях, чтобы туда можно было подкладывать эту логику. Вызов модели - уже обращение во внешний сервис(бд), так что это не ломает логику самого django
первую часть плохо понял)
про модели: изначально я писал всю логику в моделях, и теперь, часто крутя скролл мыши в поисках нужного метода, очень жалею об этом 😃
Из-за этого, сейчас, я стремлюсь оставить моделям только роль "отражения" таблицы в БД. Ну максимум - простые методы.
Вот мне понравилось твоя мысль про добавление финкционала работы с БД в менеджер или в queryset. Сам я часто про эти возможности забываю.
В итоге: модели и вью - максимально "худые", вся логика в сервисы. Твоя мысль заставила задуматься о других вариантах.