2011-05-03 117 views
0

因此,在我的项目中,我试图将User模型扩展到Staff类,并将Group模型扩展到PermGroup类。但是,当我在Staff's groups字段中保存PermGroup(从User继承)时,它只会将PermGroup对象保存为一个组,并且我在PermGroup类中定义的所有字段和方法都将被删除。所以我决定采取最好的行动方式是重写组字段。从我发现的早期的stackoverflow问题和Django文档,这应该工作。Django:想要一个ManyRelatedManager,获取ManyToManyField而不是

class Staff(User): 
    User.groups = models.ManyToManyField('PermGroup', blank=True) 

我需要使用“PermGroup”,因为类文件后显示出来,并PermGroup具有依赖于在工作人员类中的字段,所以如果我切换顺序我也有同样的问题,只有在PermGroup类中。

现在我遇到的问题是,组现在是一个ManyToManyField对象,其中所有其他“manytomany”字段都是ManyRelatedManagers。我希望组是一个ManyRelatedManager但我不知道如何。

当我使用'PermGroup'模型调用来初始化它时,是否有可能让组成为一个ManyRelatedManager?

如果我的方法是错误的,你可以建议在Staff类中保存PermGroup的替代方案。我将不胜感激。

回答

0

为什么不只是让您的员工成为他/她相应用户的ForeignKey(OneToOneField,更确切地说)的标准模型?

而且,为了消除循环依赖问题,您只需要使一个依赖于另一个。例如,PermGroup模型可以拥有该组中ManytoMany职员的字段。有没有必要让员工有一个PermGroup,因为如果你想看到一个成员所属的,你只是做这样的事情是什么群体:

groups_theyre_in = PermGroups.objects.filter(staff_members__id=id_were_looking_for) 
+0

好了,我们已经围绕它的工作对去除PermGroup的依赖员工。 虽然我的原始问题仍然存在。当我覆盖用户组字段 “User.groups = models.ManyToManyField(PermGroup,blank = True)” 它仍然使组成ManyToManyField对象,而不是ManyRelatedManager对象。如何在不改变对象的情况下重写此字段? – Colin 2011-05-03 23:32:51

相关问题