[英]Register custom user model with admin auth
class User(AbstractUser):
class Meta:
app_label = 'auth'
這可以解決您的問題,但可能會在您遷移應用程序時導致一些錯誤。 其他黑客的定義get_app_list
在AdminSite
。
我認為您正在尋找的是替換 django 用戶模型。 為此,請參閱這篇文章的答案: 在 Django 中使用自定義字段擴展用戶模型。 我建議走擴展路線,但這意味着必須注冊父模型和子模型。
如果您真的想要一個模型,只需將AUTH_USER_MODEL
設置設置為您的模型。 這基本上取代了默認模型。
在您的 settings.py 中:
AUTH_USER_MODEL = "appname.UserModelName"
有關替換用戶模型的更多信息,請參閱https://docs.djangoproject.com/en/dev/topics/auth/customizing/#substituting-a-custom-user-model 。
嘗試這個:
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.utils.translation import gettext_lazy as _
class AdminExtra(UserAdmin):
add_form_template = "admin/auth/user/add_form.html"
change_user_password_template = None
fieldsets = (
(None, {"fields": ("username", "password")}),
(_("Personal info"), {"fields": ("first_name", "last_name", "email", "nick_name")}),
(
_("Permissions"),
{
"fields": (
"is_active",
"is_staff",
"is_superuser",
"groups",
"user_permissions",
),
},
),
(_("Important dates"), {"fields": ("last_login", "date_joined")}),
)
add_fieldsets = (
(
None,
{
"classes": ("wide",),
"fields": ("username", "password1", "password2"),
},
),
)
admin.site.register(User, AdminExtra)
在 admin.py 中使用
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
UserAdmin.list_display = ('email', 'first_name', 'last_name', 'is_active', 'date_joined', 'is_staff')
admin.site.register(User, UserAdmin)
可能想試試這個:
https://libraries.io/pypi/django-modeladmin-reorder
管理應用程序中應用程序和模型的自定義排序。 您還可以從應用程序列表中重命名、交叉鏈接或排除模型。
如何讓新的用戶模型顯示在“身份驗證和授權”下
我使用 Django 3.0 也有同樣的問題,這就是我解決它的方法:
class CustomUser(AbstractUser):
class Meta:
db_table = 'auth_user'
app_label = 'auth'
在設置中:
AUTH_USER_MODEL = "auth.CustomUser"
您需要導入自定義用戶模型,而不是原始django.contrib.auth.models.User。
所以它應該適用於
from django.contrib.auth.admin import UserAdmin
from myapp.models import CustomUser
admin.site.register(CustomUser, UserAdmin)
在你的admin.py中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.