Могу ли я вызвать функцию для установки USERNAME_FIELD = ''?
могу ли я вызвать функцию в USERNAME_FIELD = '', чтобы создать необязательный выбор для входа, используя электронную почту или номер телефона? если да, то как?
да, вы можете
Вы можете написать специальную функцию входа в представление и использовать запрос следующим образом :
user = User.objects.filter(Q(email=value)|Q(username=value)).first()
login(request, user)
Я использую функции Q django db для сложных запросов и я могу использовать Or в моих запросах, например, в коде вверху я фильтрую email равный по значению или имя пользователя равное по значению, так что если пользователь вводит имя пользователя или email я могу найти его
другими способами я могу использовать два запроса, но это не часто встречается например, так :
user_by_username=User.objects.filter(usernsme=value).first()
if user_by_username:
login(request,user)
else:
user_by_email=User.objects.filter(email=value).first()
if user_by_email:
login(request,user_by_email)
и модель пользователя по умолчанию не имеет поля mobile, вы можете сохранить mobile как имя пользователя или создать специальную модель пользователя или создать новую модель для вашего профиля пользователя