Django:两步RelatedManager
我有三个由外键链接的模型:
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)
因此,如果我可以在实例上使用“三集”管理器,那就太好了。
解决方案 我最终添加了一个从三到一的外键。 感谢您的回答让我想起了 KISS 哲学。
I have three models linked by foreign keys:
class One(models.Model):
...
class Two(models.Model):
one = models.ForeignKey(One)
class Three(models.Model):
two = models.ForeignKey(Two)
and I can do:
one.two_set.all()
to access all related 'Two' instances from a 'One' instance.
How can I build a custom manager to access all 'Three' instances from a 'One' instance?
I need this because I have a framework which builds an HTML table given an instance and one of its managers:
create_child_table(instance, manager_name)
so, it would be fine if I can have a 'three_set' manager to be used on the instance.
SOLUTION
I ended up by adding a ForeignKey from Three to One.
Thanks to your answers that reminded me of the KISS philosophy.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你不需要经理。这将做到这一点:
You don't need a manager. This will do it:
您可以使用反向关系 。您可以使用相关模型的小写名称,在您的情况下为
two
和Three
例如:You can use the reverse relationship. You can use the lower case name of the related model, in your case
two
andthree
eg: