使用admin auth注册自定义用户模型

时间:2016-03-16 20:52:32

标签: python django django-admin django-authentication

在Django项目中,我有一个自定义用户模型,可以添加一个额外的字段:

class User(AbstractUser):

    company = models.ForeignKey(Company, null=True, blank=True)

此模型在我的应用中定义,例如MyApp.models

如何让新的User模型显示在"身份验证和授权"作为原始django.contrib.auth模型?

enter image description here

6 个答案:

答案 0 :(得分:1)

我认为您正在寻找的是替换Django用户模型。为此,请参见以下信息:Extending the User model with custom fields in Django。我建议您走扩展路线,但这意味着父子模型都必须注册。

如果您确实想要一个模型,只需将[best_estimator_]设置设置为模型即可。这实际上替代了默认模型。

在您的settings.py中:

AUTH_USER_MODEL

有关更换用户模型的更多信息,请参见https://docs.djangoproject.com/en/dev/topics/auth/customizing/#substituting-a-custom-user-model

答案 1 :(得分:0)

在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)

答案 2 :(得分:0)

class User(AbstractUser):

    class Meta:
    app_label = 'auth'

这可以解决您的问题,但在迁移应用程序时可能会导致一些错误。另一招是在您的get_app_list中定义AdminSite

答案 3 :(得分:0)

可能想尝试一下:

https://libraries.io/pypi/django-modeladmin-reorder

管理应用中应用和模型的自定义订购。您还可以重命名,交叉链接或从应用列表中排除模型。

答案 4 :(得分:0)

如何使新的用户模型显示在“身份验证和 授权”

我在使用Django 3.0时也遇到了同样的问题,这就是我解决它的方法:

class CustomUser(AbstractUser):
    
     class Meta:
         db_table = 'auth_user'
         app_label = 'auth'

在设置中:

AUTH_USER_MODEL = "auth.CustomUser"

答案 5 :(得分:-1)

您需要导入自定义用户模型,而不是原始django.contrib.auth.models.User。

所以它应该只用

from django.contrib.auth.admin import UserAdmin
from myapp.models import CustomUser
admin.site.register(CustomUser, UserAdmin)
你的admin.py

中的