2016-12-30 138 views
1

我正在使用django-registration軟件包製作一個django網站。我希望用戶使用他們的電子郵件註冊並且沒有用戶名,這樣我就可以使用他們的實際名稱(如在Facebook上)的界面並通過他們的電子郵件跟蹤他們。相同的用戶名和電子郵件的Django用戶?

我需要一個用戶配置文件,並計劃擴大與oneToOne場後對用戶的模式,但現在我不知道如何使用自己的電子郵件作爲用戶名。我想我可以簡單地向用戶詢問他們的電子郵件,並將其作爲用戶名存儲,這將是一個簡單的修復。但是,它會要求我修改所有的表單,並會在數據庫中創建基本上重複的列(email = username)。

這個問題實在是開放式的,我想知道是否有改變用戶模型中期項目的簡單方法。我已經閱讀了有關User(AbstractUser)類的文檔,但是隻有當我們剛開始項目時,這看起來纔是好的。

謝謝,任何幫助將不勝感激。

回答

1

您可以通過擴展AbstractBaseUser編寫自定義的用戶類,並聲明電子郵件字段USERNAME_FIELD,如:不延長AbstractBaseUser可以在你的apps.py導入用戶模型周圍

USERNAME_FIELD = 'email' 

另一個工作,並設置USERNAME_FIELD像:

from django.contrib.auth.models import User 
User.USERNAME_FIELD = 'email' 
+0

請提供一些細節,我還是很迷茫。這似乎是一個非常簡單和直接的修復,但我無法正確實施它。謝謝! –

+0

'django.contrib.auth.models.User'使用'username'來唯一標識用戶。如果你想覆蓋這種行爲,你有兩個選擇,寫入自定義身份驗證後端,允許您使用'django.contrib.auth.models.User'的非唯一'email'字段標記爲'USERNAME_FIELD'或寫入自定義用戶模型通過繼承'AbstractUser'類。如果你不想陷入認證後端,我建議你寫自定義的用戶模型。 – Darshit

相關問題