自定义 Django 组模型

问题描述 投票:0回答:3

我正在尝试向 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)
python django
3个回答
12
投票

您可以尝试创建一个新模型,这将扩展 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

0
投票

您可以使用 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",
    )
    ...

您可能需要查看文档以了解详细信息此处


-4
投票

您不需要创建新应用程序,只需将 django admin models.py 覆盖到您的项目中并根据您的要求进行自定义即可。

https://docs.djangoproject.com/en/1.8/topics/db/models/

© www.soinside.com 2019 - 2024. All rights reserved.