所以在我的项目中,我试图将User模型扩展为Staff类,将Group模型扩展为PermGroup类。但是,当我将PermGroup保存在Staff的groups字段(继承自User)时,它只将PermGroup对象保存为Group,并且我在PermGroup类中定义的所有字段和方法都将被删除。所以我决定最好的行动方案是覆盖群组字段。从我发现的早期stackoverflow问题和Django文档中,这应该可行。
class Staff(User):
User.groups = models.ManyToManyField('PermGroup', blank=True)
我需要使用'PermGroup',因为该类稍后会出现在文件中,而PermGroup有一个依赖Staff类的字段,所以如果我切换顺序我会遇到同样的问题,只在PermGroup类中
现在我遇到的问题是,群组现在是一个ManyToManyField对象,其中所有其他“manytomany”字段都是ManyRelatedManagers。我希望组是一个ManyRelatedManager,但我不知道如何。
当我使用'PermGroup'模型调用对其进行初始化时,是否可以将组作为ManyRelatedManager?
如果我的方法有误,您可以建议在Staff类中保存PermGroups的替代方法。我将不胜感激。
答案 0 :(得分:0)
为什么不让您的员工成为他/她相应用户的ForeignKey(更确切地说是OneToOneField)的标准型号?
并且,要消除循环依赖性问题,您只需要使一个依赖于另一个。例如,PermGroup模型可以在该组中具有ManytoMany的Staff成员的字段。工作人员没有必要拥有一个PermGroup,因为如果你想看一个成员属于哪个组,你就会做这样的事情:
groups_theyre_in = PermGroups.objects.filter(staff_members__id=id_were_looking_for)