带模型的Django群逻辑(manytomanyrelationship)

2024-09-27 07:24:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个关于如何用Django实现一些组逻辑的问题,下面是一幅图,帮助您理解我的目标:

http://i.stack.imgur.com/RpKJA.png

编辑: http://i.stack.imgur.com/h8SEW.png

所以我想得到的是:

  • 有一个主组(Group1),当一个成员加入到Group2和group3的子组时,他将被自动添加到Group1
  • Group2和Group3中都可以有成员-但是它们不应该在Group1中出现两次。在

如果有可能实现,我还希望有以下功能:

  • Group4又是Group3的子组,如果一个成员加入Group4,他应该自动保存为Group3的成员,从而也保存为Group1的成员。在

目前我有以下型号:

#models.py
class MyGroup(models.Model):

    label = models.CharField(_('Label'), max_length=30)
    members = models.ManyToManyField('MyUser', null=True, blank=True)
    parents = models.ManyToManyField('self', null=True, blank=True, symmetrical=False)
    # parents could be renamed to supersets/masters as well

class MyUser(AbstractBaseUser, PermissionsMixin):
    subscriptions = models.ManyToManyField(
        MyGroup, through=MyGroup.members.through, blank=True
    )

提前感谢你的回答-这也会帮助你知道它是否真的可能实现:那么我就知道我不会白白浪费时间,去想办法去做。在

编辑:

我试着这样做:

^{pr2}$

这在某种程度上是可行的,但也有非常不光彩的缺陷:

  • 用户将只保存在父组中,当我在组菜单上保存成员时(因为这是组模型的一个保存功能),我也可以在用户模型中添加另一个保存功能,但效果并不好
  • 我无法再添加新的组,因为我无法再添加新的组: "<MyGroup: group5>" needs to have a value for field "from_mygroup" before this many-to-many relationship can be used.
  • 最后但并非最不重要的是,我认为在save函数上实现的方法不会很好地执行-尤其是当每个组中都有大量成员时。。。在

Tags: to功能true编辑models成员classblank

热门问题