簡體   English   中英

Django 1.5上admin中的自定義用戶模型

[英]Custom User Model in admin on Django 1.5

我在Django 1.5應用程序中使用自定義用戶模型myapp.MyUser 我按照文檔說明進行了更新, AUTH_USER_MODEL = "myapp.MyUser" 當MyUser擴展AbstractUser時,我使用以下代碼創建了管理員:

from django.contrib.auth import get_user_model
from django.contrib.auth.admin import UserAdmin

admin.site.register(get_user_model(), UserAdmin)

除創建形式外,它工作正常。 當我嘗試創建新用戶時,引發以下異常:

DatabaseError at /admin/core/user/add/
(1146, "Table 'mydatabase.auth_user' doesn't exist")

完整的追溯可以在這里找到。

挖出Django的源代碼,它看起來像UserCreationForm由UserAdmin使用- 直接引用django的內置auth.User ,而不是使用get_user_model

可能是問題嗎? 為什么除了創建以外,所有內容都引用myapp.MyUser ,包括管理員的auth和更改表單?

正如你所說,在UserCreationForm引用auth.User直接。 有關自定義用戶的Django文檔和內置的auth表單規定,您必須為任何自定義用戶模型重寫它。

UserCreationForm

取決於用戶模型。 必須為任何自定義用戶模型重寫。

有一個相關的票證票證20086 ,最初由於無效而關閉,因為用戶創建表單正在按記錄工作。

在同一頁面上有完整的示例 ,該示例向您展示如何重寫表單並在admin中注冊自定義用戶模型。

如果您不介意將自定義模型存儲在名為auth_user的表中,則只需在Meta設置即可解決auth_user table doesn't exist 所有你需要的是:

class MyUser(AbstractUser):

    class Meta(AbstractUser.Meta):
        swappable = 'AUTH_USER_MODEL'
        db_table = 'auth_user'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM