2010-11-08 239 views
0

在django/django/contrib/auth/forms.py中如何覆蓋默認方法 並在用戶模塊中包含相同內容?Django覆蓋默認功能

所以我的打算是,我想改變用戶名字段長度爲64個字符,但因爲每當新版本下載這個文件來改變這不會是正確的做到這一點在Django目錄,....

究竟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

究竟是你想重寫什麼?問題是什麼? – 2010-11-08 13:30:06

+0

請參閱編輯 – Hulk 2010-11-08 13:31:13

+0

不要忘記從您的DBMS'ALTER'您的用戶表架構。由於'auth_user'的usename字段長度爲30個字符,而長度超過30個字符串的任何字符串都會導致數據庫級別的錯誤。 – FallenAngel 2012-05-26 11:38:09

回答

0

如果我理解正確的話,您可以通過子類AuthenticationForm到如來改變它MyAuthenticationForm

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

這樣,你就保留的校驗AuthenticationForm,但還是讓用戶名是64個字符長。

+0

這可以只爲用戶名字段?如果是這樣,我可以覆蓋User()模塊的用戶名也有64個字符。 – Hulk 2010-11-08 13:41:29

+0

@浩克:不,你基本上不能改變現有的模型,至少不容易。 – 2010-11-08 21:52:34

+0

K謝謝你現在我會在django中進行更改 – Hulk 2010-11-09 05:02:06

1

@Deniz多甘:你還必須說服登錄查看使用自定義窗體:

login(request, authentication_form=MyAuthenticationForm)