2010-11-08 2 views
0

В django/django/contrib/auth/forms.py как переопределить метод по умолчанию и включить его в модуль пользователя?Django переопределяет функции по умолчанию

Так что мое намерение состоит в том, что я хочу, чтобы изменить длину имени пользователя поля до 64 символов, но это не было бы правильно сделать это в Джанго каталогов, потому что всякий раз, когда новая версия загружается этот файл на изменился ....

Что именно shoudl быть изменены, чтобы сделать это

class AuthenticationForm(forms.Form): 
""" 
Base class for authenticating users. Extend this to get a form that accepts 
username/password logins. 
""" 
username = forms.CharField(label=_("Username"), max_length=30) 
password = forms.CharField(label=_("Password"), widget=forms.PasswordInput) 
+0

Что именно вы пытаетесь переопределить? В чем проблема? –

+0

См. Edit – Hulk

+0

Не забудьте «ALTER» схему вашей пользовательской таблицы из вашей СУБД. Поскольку поле 'usename'' auth_user составляет 30 символов, а любая строка длиной более 30 приведет к ошибке уровня базы данных. – FallenAngel

ответ

0

Если я вас правильно понимаю, вы можете быть в состоянии изменить его к югу причислять AuthenticationForm в, например, MyAuthenticationForm:

class MyAuthenticationForm(AuthenticationForm): 
    username = forms.CharField(label=_("Username"), max_length=64) 

Таким образом, вы бы держать валидатор от AuthenticationForm, но все-таки пусть имя пользователя будет 64 символов.

+0

Можно ли это сделать только для поля имени пользователя? Если это так, я могу переопределить имя пользователя модуля User(), чтобы иметь также 64 символа. – Hulk

+0

@Hulk: Нет, вы в принципе не можете изменить существующую модель, как это, по крайней мере, не так просто. –

+0

K спасибо, на данный момент я бы внес изменения в django – Hulk

1

@Deniz Dogan: Вы также должны убедить вид входа в систему, чтобы использовать пользовательскую форму:

login(request, authentication_form=MyAuthenticationForm) 
Смежные вопросы