Я пытаюсь указать пространство имен в поле имени пользователя объекта пользователя в зависимости от значения is_staff
.
Например;
- Сохранение пользователя с именем пользователя «Username123» и is_staff = False создаст объект пользователя в базе данных со значением «customer: Username123»
- Сохранение пользователя с именем пользователя 'Username123' и is_staff = True создаст объект пользователя в базе данных со значением 'staff: Username123'
Причина для этого заключается в том, что пользователи могут авторизоваться через активный каталог или Oauth2 в веб-приложении, над которым я работаю. Поскольку имя пользователя должно быть уникальным, я пытаюсь использовать интервал имен, чтобы избежать конфликтов между двумя пользователями с пространственным именем пользователя, но авторизованными из разных источников.
Я рассмотрел использование методов from_db_value и get_prep_value , но они не предоставляют объект пользователя (таким образом, нет способа определить значение is_staff). pre_save предоставляет доступ к пользовательской модели, но не помогает при запросах
например .filter(username='Username123', is_staff=True)
для фильтрации пользователей с именем пользователя staff:Username123
Я также пытался сделать поле имени пользователя не уникальным, но решил, что это плохая идея, поскольку django предупреждает об этом.
Есть ли у кого-нибудь рекомендации о том, как сохранить и запросить префиксное значение, которое зависит от флага is_staff
?