【发布时间】:2009-11-11 02:46:01
【问题描述】:
首先,一些指向我用作参考的页面的链接:A SO question,以及 generic relations 和 multi-table inheritance 上的 Django 文档。
到目前为止,我已经设置了多表继承设计。对象(例如:汽车、狗、计算机)可以继承 Item 类。我需要能够从数据库中检索项目,获取子类,并用它做一些事情。我的设计不允许一一检索不同种类的对象,所以我需要使用 Item 容器将它们全部包装成一个。一旦我有了项目,Django 文档说我可以通过引用带有模型名称的属性(例如:myitem.car 或 myitem.computer)来获取子类。
我不知道我的项目引用的是哪种类型的对象,那么如何获取孩子?有没有内置的方法来做到这一点?以下是我的其他一些想法:(有些比其他的更疯狂)
- 我在想我可以添加一些 GenericForeignKey 到 Item 的 引用了孩子,但我对此表示怀疑 父类甚至是合法的 通过 ForeignKey 与孩子相关联 类。
- 我想我可以有一个 项目中的 ForeignKey(ContentType) 类,找到属性 获取孩子的项目基于 内容类型的名称。
- 最后,虽然是一个丑陋的方法,但我也许可以保留一个对象类型列表,并尝试将每个对象类型作为一个属性,直到不抛出 DoesNotExist 错误。
如您所见,这些建议的解决方案并不那么优雅,但我希望我不必使用其中一个,并且这里有人可能有更好的建议。
提前致谢
【问题讨论】:
标签: python django inheritance