微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Django admin的auth部分中没有用户链接

如何解决Django admin的auth部分中没有用户链接

我正在尝试实现自定义用户模型,但是在Django管理网站的auth url localhost:8000/admin/auth/下,我的模型没有显示

我在下面的链接中找到了整个问题的答案,但是当我自己尝试实现该问题时,我仍然在Django admin的auth部分中看不到用户

No “Users” link in “Auth” section of Django admin site

我在做什么错了?

models.py

from django.contrib.auth.models import AbstractUser


class CustomUser(AbstractUser):
    pass

admin.py

from django.contrib import admin
from django.contrib.auth import get_user_model
from django.contrib.auth.admin import UserAdmin
from .forms import CustomUserCreationForm,CustomUserChangeForm

CustomUser = get_user_model()


class CustomUserAdmin(UserAdmin):
    form = CustomUserChangeForm
    add_form = CustomUserCreationForm
    model = CustomUser
    list_display = (
        "email","username",)

    fieldsets = (
        (None,{"fields": ("email","password")}),("Permissions",{"fields": ("is_admin","groups","user_permissions")}),)


admin.site.register(CustomUser,CustomUserAdmin)

forms.py

from django.contrib.auth import get_user_model
from django.contrib.auth.forms import UserCreationForm,UserChangeForm


class CustomUserCreationForm(UserCreationForm):
    class Meta:
        model = get_user_model()
        fields = ("email","username")


class CustomUserChangeForm(UserChangeForm):
    class Meta:
        model = get_user_model()
        fields = ("email","username")

解决方法

我遇到了同样的问题:

  1. 创建了自己的用户模型
  2. 在管理员中,组和我的用户模型未在同一(身份验证)部分列出

我的解决方案基本上是将django组放入我的应用程序中以使其显示在同一部分中,因为django为每个应用程序创建了管理部分。

  1. models.py中创建自己的组模型作为代理对象
from django.contrib.auth.models import Group as DjangoGroup

...

class Group(DjangoGroup):
    class Meta:
        proxy = True
        verbose_name = _('group')
        verbose_name_plural = _('groups')
  1. (取消)在admin.py中注册模型
from django.contrib.auth.admin import GroupAdmin as DjangoGroupAdmin
from django.contrib.auth.models import Group as DjangoGroup
from .models import CustomUser,Group

...

admin.site.register(CustomUser,CustomUserAdmin)

admin.site.unregister(DjangoGroup)
admin.site.register(Group,DjangoGroupAdmin)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。