定制 Django Group 模型

6

我正在尝试在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)
2个回答

12

您可以尝试创建一个新模型,它将扩展Django内置的组模型。为此,您应该使用OneToOne字段将一个名为GroupExtend的新模型链接到原始模型中,就像对用户进行操作一样(链接):

from django.contrib.auth.models import Group
    
class GroupExtend(models.Model):
    group = models.OneToOneField(Group, on_delete=models.CASCADE)
    # other fields

我该如何将其拉入管理员界面?是这样吗:from .models import GroupExtend admin.site.register(GroupExtend) - fireinspace
2
由于您将创建的新组将是GroupGroupExtend的实例,因此您可以注册一个GroupExtend(然后需要手动定义相关的Group),或者将其设置为Group模型的内联,并像文档中所示重新注册后者(我已经发布了链接)。 - chem1st
5
举例来说,如果要创建一个“组”,我需要先实例化Group模型,然后将该实例传递给GroupExtend模型。这不是有点复杂吗?我的意思是直接从Group模型继承似乎更合理。你能否解释一下为什么使用创建另一个模型然后使用OneToOneField将其连接到Group的方法应该是正确的?这将非常有帮助。 - fpaekoaij

-4

谢谢。我已经将该类添加到models.py并在admin.py中注册,但仍然没有成功。上面添加了参考代码。 - fireinspace

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接