1

我有三个由外键链接的模型:

class One(models.Model):
    ...

class Two(models.Model):
    one = models.ForeignKey(One)

class Three(models.Model):
    two = models.ForeignKey(Two)

我可以这样做:

one.two_set.all()

从“一个”实例访问所有相关的“两个”实例。

如何构建自定义管理器以从“一个”实例访问所有“三个”实例?

我需要这个,因为我有一个框架,它在给定一个实例及其管理器之一的情况下构建一个 HTML 表:

create_child_table(instance, manager_name)

因此,如果我可以在实例上使用“three_set”管理器,那就太好了。

解决方案 我最终添加了一个从三到一的外键。感谢您的回答让我想起了 KISS 哲学。

4

2 回答 2

1

你不需要经理。这将做到:

Three.objects.filter(two__one=one)
于 2011-09-12T09:32:11.020 回答
1

您可以使用反向关系。您可以在您的情况下使用相关模型的小写名称,two例如three

one_tow_three = One.objects.all().values('two','two__three')
于 2011-09-12T09:49:11.067 回答