Мой сайт использует проверку подлинности Windows, что означает, что когда я получаю имена пользователей, у них есть \ в них. Это также означает, что я не могу добавлять новых пользователей или изменять существующих через сайт администратора Django. Я пытаюсь добиться разрешения имен пользователей.
Я пытался реализовать это решение от переполнения стека
My admin.py
class DomainUserAdmin(UserAdmin):
form = DomainUserChangeForm
add_form = DomainUserChangeForm
admin.site.unregister(User)
admin.site.register(User, DomainUserAdmin)
My Validators.py
class DomainUnicodeUsernameValidator(UnicodeUsernameValidator):
"""Allows \."""
print2('This is a test')
regex = r'^[\w.@+-\\]+\Z'
message = _(
'Enter a valid username. This value may contain only letters, '
'numbers, and \/@/./+/-/_\ characters.'
)
flags = 0
My models.py
class DomainUser(User):
class Meta:
proxy = True
def __init__(self, *args, **kwargs):
self._meta.get_field('username').validators = [DomainUnicodeUsernameValidator]
super().__init__(*args, **kwargs)
myforms.py
class DomainUserChangeForm(UserChangeForm):
username = forms.CharField(max_length=150, validators=[DomainUnicodeUsernameValidator])
class Meta(UserChangeForm.Meta):
model = DomainUser
help_texts = {
'username': _('Required. 150 characters or fewer. Letters, digits and \/@/./+/-//_ only.'), # NOQA
}
Это в основном точная копия другого решения (я собираюсь изменить его, чтобы добавить уникальность, когда оно работает). Я что-то упустил или мне нужно что-то менять? Когда я пытаюсь изменить пользователя в админке, он все равно говорит Enter a valid username. This value may contain only letters, numbers, and @/./+/-/_ characters.
, но мне нужно это включить.
Спасибо за помощь!