如何扩展Django Group并在Django User中使用

4 投票
1 回答
4741 浏览
提问于 2025-04-18 10:17

我想扩展Django中“组”的功能,让组可以有额外的属性,比如一个指向组主页的链接。就像这样:

class Organization(Group):
  url = models.CharField(max_length=100)

但是,当我使用这个组织并把它添加到一个用户时(通过使用 org.user_set.add(user)),我就无法从用户那里访问到这个链接字段。当我执行 user.groups.all() 时,它显示用户在一个与我设置的组织 org 同名的组里(而不是组织)。那么,我该如何给组添加功能,同时又能从用户信息中访问到呢?

1 个回答

6

你有两个选择:

1) 新模型;

class GroupProfile(models.Model):
    group = models.OneToOneField('auth.Group', unique=True)
    url = models.CharField(max_length=100)

2) 猴子补丁;

Group.add_to_class('url', models.CharField(max_length=100))

在第二个选择中,你需要使用像 south 这样的应用程序来进行数据库迁移。

撰写回答