python - 如何扩展 Django Group 模型?

标签 python django django-models

有没有办法扩展内置的 Django Group 对象以添加类似于扩展用户对象的方式的附加属性?使用用户对象,您可以执行以下操作:

class UserProfile(models.Model):
    user = models.OneToOneField(User)

并将以下内容添加到 settings.py 文件中

AUTH_PROFILE_MODULE = 'app.UserProfile'

这让你:

profile = User.objects.get(id=1).get_profile()

是否有任何等效于扩展组的方法?如果没有,我可以采取其他方法吗?

最佳答案

如果您只是对 Group 对象进行子类化,那么默认情况下它将创建一个新的数据库表,并且管理站点不会获取任何新字段。

您需要将新字段注入(inject)现有组:

if not hasattr(Group, 'parent'):
    field = models.ForeignKey(Group, blank=True, null=True, related_name='children')
    field.contribute_to_class(Group, 'parent')

要将方法添加到组,子类但将模型标记为代理:

class MyGroup(Group):

    class Meta:
        proxy = True

    def myFunction(self):
        return True

关于python - 如何扩展 Django Group 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2181039/

相关文章:

python - 使用 python 3 正则表达式匹配双引号中的字符串

python - flask-sqlalchemy 列的最大值

python - 在 Django 中使用空值创建左连接

python - sqlalchemy - 用 2 个条件连接子表

python - 将 DataFrame 中的数组更改为值

javascript - Django 民意调查教程第 3 部分 : polls/templates/polls/index. html - 此代码是什么?这不是 python

javascript - 如何在 Django 模板中迭代字典?

django - 将查询集结果插入到多对多字段中

python - 使用 django.db 时如何将原始 SQL 与 ORM API 混合使用?

python - Django 模型子类化 : Get the subclass by querying the superclass