自称为自指的Manytomanyfield

问题描述 投票:0回答:1

我有一个具有自指的Manytomanyfield的模型:

class Release(models.Model):
    # ...
    bundled_releases = models.ManyToManyField("self", blank=True)

    def get_bundles(self):
        return Release.objects.filter(bundled_releases__in=[self.id])

我希望

get_bundles
仅返回在其字段中具有
self
的版本,但是这样它也可以返回在
bundled_releases
的字段中的发行版。我该怎么做?
Edit:
,反之亦然,我需要返回发行版
self

的替代方案,但不返回将发行版本包含在其自己的

bundled_releases中的版本。

您的关系是对称的,这就是问题所在。默认情况下,与自身的关系具有
release.bundled_releases.all

[django-doc]
django django-models manytomanyfield
1个回答
0
投票
。因此,这意味着

bundled_releasesbundled_releases

。
因此,您与之合作:
symmetrical=True 但是,需要做出my_a.bundled_releases.all()方法。 Django使关系可以在两个方向上访问。在这里,您可以反向触发该关系:
my_a.release_set.all()
由于

class Release(models.Model): # … bundled_releases = models.ManyToManyField( 'self', symmetrical=False, related_name='bundles', blank=True )


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.