如何扩展Django Group并仍然在Django用户中使用

时间:2014-06-18 20:51:48

标签: python django django-models

我希望扩展Django小组的功能,因此我可以在小组上拥有额外的属性,例如群组主页的网址。像这样:

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

但是,当使用此组织并将其添加到用户时(使用org.user_set.add(user)),我无法从用户访问url字段。当我user.groups.all()时,它会显示用户所在的组(而不是组织)与我在组织org上设置的名称相同。那么我该如何向Group添加功能,但是可以通过我的用户信息访问它?

1 个答案:

答案 0 :(得分:5)

你有两个选择;

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之类的应用程序进行数据库迁移。