Я проводил рефакторинг приложения, которое настроило стандартную модель User из django.contrib.auth.models, создав UserProfile и определив его с помощью AUTH_PROFILE_MODULE.
Проблема в том, что атрибуты в UserProfile используются по всему проекту для определения того, что видит пользователь.
Я неоднократно создавал тесты и вставлял операторы такого типа:
user = User.objects.get(pk=1)
user_profile = user.get_profile()
if user_profile.karma > 10:
do_some_stuff()
Это утомительно, и теперь мне интересно, нарушаю ли я принцип СУХОГО.
Будет ли разумнее создать пользовательский UserManager, который автоматически загружает данные UserProfile при запросе пользователя.
Я мог бы даже перебрать атрибуты UserProfile и добавить их в модель User. Это избавило бы меня от необходимости обновлять все ссылки на пользовательские атрибуты модели, которые засоряют код.
Конечно, я должен был бы вернуться к процессу, чтобы разрешить корректное обновление моделей User и UserProfile.
Какой подход больше для Джанго?