在Django项目中,我有一个自定义用户模型,可以添加一个额外的字段:
class User(AbstractUser):
company = models.ForeignKey(Company, null=True, blank=True)
此模型在我的应用中定义,例如MyApp.models
。
如何让新的User
模型显示在"身份验证和授权"作为原始django.contrib.auth
模型?
答案 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 中的