Немного неприятной проблемы, есть несколько похожих вопросов, но я не могу найти ответы на какие-либо вопросы для меня.
Прежде всего: регистрация / вход на мой сайт осуществляется исключительно через django-allauth.У него есть настройка ACCOUNT_USERNAME_VALIDATORS
, и он отлично работает для создания пользователей - мне просто нужно было определить валидатор с этим регулярным выражением r'^[\w\.@+\- ]+$'
и указать для него настройку.
Проблема в том, что, если я пытаюсь отредактировать существующего пользователя в администраторе (например, чтобы дать ему разрешения), я получаю ошибку при сохранении, что поле имени пользователя недопустимо из-за пробелов.Я попробовал несколько вещей, таких как этот метод, из django docs :
from django.contrib.auth.models import User
from django.contrib.auth.validators import UnicodeUsernameValidator
class MyValidator(UnicodeUsernameValidator):
regex = r'^[\w\.@+\- ]+$'
class MyUser(User):
username_validator = MyValidator()
class Meta:
proxy = True
И я также попытался переопределить UserChangeForm в моем admin.py:
class MyUserChangeForm(UserChangeForm):
username = forms.RegexField(
label='Username',
max_length=30,
regex=r'^[\w\.@+\- ]+$',
help_text = 'Required. 30 characters or fewer. Alphanumeric characters only (letters, digits, hyphens and underscores).')
class CustomUserAdmin(UserAdmin):
form = MyUserChangeForm
admin.site.unregister(User)
admin.site.register(User, CustomUserAdmin)
Но не повезло ни с одним из них.Я не получаю никаких ошибок, но я все еще не могу сохранить изменения для пользователей с пробелами в их именах.Я не могу помочь, но чувствую, что упускаю что-то глупое, из других ответов кажется, что это должно быть довольно просто.