如何将模型移动到 Django 站点管理中的其他部分

How to move model to the other section in Django's site admin

是否可以将默认组模型从 'Authentication and Authoriation' 部分(在 Django 管理站点上)移动到自定义部分以及如何实现?

换句话说,让我们从头开始。

我的 Django 项目中有一个非常简单的应用程序 'accounts'。

models.py 文件如下所示:

from django.contrib.auth.models import AbstractUser


class User(AbstractUser):
    def __str__(self):
        return self.email

serializers.py 文件:

from rest_framework import serializers
from django.contrib.auth.models import Group
from django.contrib.auth import get_user_model


class GroupSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Group


class UserSerializer(serializers.HyperlinkedModelSerializer):
    groups = serializers.HyperlinkedRelatedField(
        many=True,
        required=False,
        read_only=True,
        view_name="group-detail"
    )

    class Meta:
        model = get_user_model()
        exclude = ('user_permissions',)

现在,在管理站点上我有两个部分:'Accounts' 和 'Authentication and Authorization'。 'Accounts' 部分包含我的 'Users' table(对于用户模型),'Authentication and Authorization' 部分包含 'Groups' table(对于 Django 的默认授权组模型)。

我的问题是 - 是否可以以及如何将组 table(模型)移动到 'Accounts' 部分?

我什至尝试基于 Django 的默认 auth Group 模型创建自定义 'Group' 模型,但一直卡在迁移异常上。

Is it possible to move default Groups model from 'Authentication and Authoriation' section (on the Django admin site) to custom one and how to achieve that?

是的,有可能。

1) 您可以将您的模型移动到 auth 部分,只需添加到您的 class:

class Meta:
    app_label = 'auth'

2) 您可以将组和用户模型移动到您的应用程序部分,因为该变体需要:

覆盖用户模型并将其添加到您的应用程序

from django.contrib.auth.models import AbstractUser


class CustomUser(AbstractUser):
    pass

还需要添加到您的项目设置中AUTH_USER_MODEL = 'your_app.CustomUser'

不要忘记在您的应用程序 admin.py 中声明:

class UserAdmin(admin.ModelAdmin):
    pass


admin.site.register(CustomUser, UserAdmin)

对于组模型,将此代码放入 admin.py:

from django.db.models.loading import get_models
from django.contrib.auth import models

models = get_models(models)
models[1]._meta.app_label = 'your_app'

3)可以看看django-admin-tools