我正在尝试向 Django 管理中的“组”添加一个字段 - 例如,当您在后端创建一个组时,您定义“名称”和“权限”,我想向其中添加一个字段该列表(CharField)。这是否需要一个新的应用程序,或者我可以在我的根 models.py 中扩展 Group 模型吗?
这里是 django 和 python 的新手,如果问题措辞不好,很抱歉。
这是我到目前为止所拥有的:
#models.py
from django.db import models
from django.contrib.auth.models import Group
class AppDBName(Group):
AppDB = models.CharField(max_length=30)
def __unicode__(self):
return self.AppDB
#admin.py
from django.contrib import admin
from .models import AppDBName
admin.site.register(AppDBName)
您可以尝试创建一个新模型,这将扩展 Django 内置组模型。为此,您应该将一个新模型(例如
GroupExtend
)链接到带有 OneToOne
字段的原始模型,就像可以为用户完成的那样(link):
from django.contrib.auth.models import Group
class GroupExtend(models.Model):
group = models.OneToOneField(Group, on_delete=models.CASCADE)
# other fields
您可以使用 django-group-model 包来覆盖组模型,就像处理用户模型一样。这是一个简短的示例,说明了被覆盖的 Group 模型的样子
from django_group_model.models import AbstractGroup
class Group(AbstractGroup):
category = models.CharField(max_length=50)
设置
AUTH_GROUP_MODEL
设置。
AUTH_GROUP_MODEL = 'myapp.Role'
将组模型与您的用户模型一起使用
class User(AbstractUser, ...):
...
groups = models.ManyToManyField(
'myapp.Group',
blank=True,
related_name="user_set",
related_query_name="user",
)
...
您可能需要查看文档以了解详细信息此处
您不需要创建新应用程序,只需将 django admin models.py 覆盖到您的项目中并根据您的要求进行自定义即可。