繁体   English   中英

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

[英]No user link in auth section of Django admin

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

我在下面的链接中找到了整个问题的答案,但是当我自己尝试实现它时,我仍然没有在 Django 管理员的 auth 部分看到用户。

Django 管理站点的“Auth”部分中没有“Users”链接

我在这里做错了什么?

模型.py

from django.contrib.auth.models import AbstractUser


class CustomUser(AbstractUser):
    pass

管理文件

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)

表格.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. 在管理员中,组和我的用户模型未列在同一 (auth) 部分中

我的解决方案基本上是将 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM