代码之家  ›  专栏  ›  技术社区  ›  Jake

多对多的自我关系和额外的数据,我如何从某个方向选择?

  •  1
  • Jake  · 技术社区  · 15 年前

    我有一些分层数据,其中每个集合可以有多个成员,并且可以属于多个集合(组)。

    以下是模型:

    class Set(models.Model):
        ...
        groups = models.ManyToManyField('self', through='Membership', symmetrical=False)
        members = models.ManyToManyField('self', through='Membership', symmetrical=False)
    
    class Membership(models.Model):
        group = models.ForeignKey( Set, related_name='Members' )
        member = models.ForeignKey( Set, related_name='Groups' )
        order = models.IntegerField( default=-1 )
    

    我想知道如何获取集合实例的所有成员或所有组。 我想我可以做到这一点,但这不是很合乎逻辑,谁能告诉我发生了什么,我该怎么做?

    # This gives me a set of Sets
    # Which seems to be the groups this Set belongs to
    set_instance.set_set.all()
    
    # These give me a set of Memberships, not Sets
    set_instance.Members.all()
    set_instance.Groups.all()
    
    # These they both return a set of Sets
    # which seem to be the members of this one
    set_instance.members.all()
    set_instance.groups.all()
    
    0 回复  |  直到 15 年前