简体   繁体   English

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

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

I am trying to implement a custom user model, but under the auth url localhost:8000/admin/auth/ of the Django admin website my model is not showing up.我正在尝试实现自定义用户模型,但是在 Django 管理网站的 auth url localhost:8000/admin/auth/下,我的模型没有显示出来。

I found an answer at the link below to the overall problem, but when trying to implement it myself I still do not see the users in the auth section of the Django admin.我在下面的链接中找到了整个问题的答案,但是当我自己尝试实现它时,我仍然没有在 Django 管理员的 auth 部分看到用户。

No “Users” link in “Auth” section of Django admin site Django 管理站点的“Auth”部分中没有“Users”链接

what am I doing wrong here ?我在这里做错了什么?

models.py模型.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表格.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")

I faced the same problem:我遇到了同样的问题:

  1. created my own user model创建了我自己的用户模型
  2. in admin, groups and my user model are not listed in same (auth) section在管理员中,组和我的用户模型未列在同一 (auth) 部分中

My solution was basically to put django groups into my app to have it displayed in the same section, because django creates admin sections for each app.我的解决方案基本上是将 django 组放入我的应用程序中,使其显示在同一部分中,因为 django 为每个应用程序创建了管理部分。

  1. create your own group model as proxy object in your models.pymodels.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. (un)register your models in admin.py (取消)在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