我想使用AbstractUser添加一個字段到Django的標準用戶模型。這是我的代碼:數據庫錯誤:沒有這樣的表:auth_user。擴展AbstractUser和使用模型註冊管理
class GUser(AbstractUser):
uuid = UUIDField(auto=True)
這一直是成功的,因爲從殼,我可以說,
>>> a = GUser.objects.all()
>>> a
[<GUser: User1>]
>>> a[0].uuid
UUID('7d1f0b7b52144a2ea20db81ce74741e3')
我有被登記在/管理新用戶的問題。當我創建一個新用戶,我得到一個數據庫錯誤:
no such table: auth_user
之前,我得到更多的到它,這是我的forms.py:
class GUserChangeForm(UserChangeForm):
class Meta:
model = get_user_model()
class GUserCreationForm(UserCreationForm):
class Meta:
model = get_user_model()
def clean_username(self):
username = self.cleaned_data["username"]
try:
get_user_model().objects.get(username=username)
except get_user_model().DoesNotExist:
return username
raise forms.ValidationError(self.error_messages['duplicate'])
我的admin.py:
class GUserAdmin(UserAdmin):
form = GUserChangeForm
add_form = GUserCreationForm
fieldsets = (
(None, {'fields': [('username', 'password')]}),
('Personal info', {'fields': ('is_active','is_staff','is_superuser','groups', 'user_permissions')}),
('Important dates', {'fields': ('last_login', 'date_joined')}),
#('Universal ID', {'fields': ('uuid')})
)
admin.site.register(GUser,GUserAdmin)
我讀到,當出現這種情況給其他人,他們實現自己的形式(像我一樣)覆蓋clean_username(個體經營):
但是,當我試圖從管理員添加用戶時,我認爲這不會被調用。即使我註冊了我的GUserAdmin,auth.forms.py文件也會被調用。另外,當我刪除我的數據庫(sqlite3),然後調用python manage.py syncdb時,我發現auth_user表實際上並沒有被創建。
是的,我在settings.py中包含了AUTH_USER_MODEL。
任何幫助將不勝感激。
隨着噸SO職位,但他們都不來解決我遇到的問題。
看起來像這個線程有你的答案:https://groups.google。com/forum /#!topic/django-users/kOVEy9zYn5c 顯然,自定義模型沒有兌現管理員的'Meta' – karthikr
@karthikr我看過那個頁面,但不確定我們是否有同樣的問題。解決方案是否真的改變了auth.forms.py中的代碼? – FrancescoA
我認爲這是3月20日Scott Anderson的回答 – karthikr