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

时间:2015-01-24 01:21:08

标签: python django model admin

是否可以从“身份验证和授权”中移动默认的群组模型。部分(在Django管理站点上)自定义一个以及如何实现它?

从另一个词开始,让我们从头开始。

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

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',)

现在,在管理网站上,我有两个部分:'帐户'和'身份验证和授权'。 '帐户'部分包含我的用户'表(用户模型)和'身份验证和授权'部分包含'群组' table(对于Django的默认授权组模型)。

我的问题是 - 是否可以以及如何将群组表(模型)移动到'帐户'部?

我甚至试图创建一个定制的' Group'模型基于Django的默认身份验证组模型,但仍然存在迁移异常。

1 个答案:

答案 0 :(得分:8)

  

是否可以从“身份验证和授权”中移动默认的群组模型。部分(在Django管理站点上)自定义一个以及如何实现它?

是的,这是可能的。

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

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