在django中从父类中的对象查找子类中的对象

jMy*_*les 6 django django-models

假设我有一个父类(ThingsThatMigrate)和两个孩子(Coconut和Swallow).现在让我们说我有一个ThingsThatMigrate对象.我怎样才能确定它实际上是椰子还是燕子?一旦这样做了,我怎样才能到达椰子或燕子对象?

Ber*_*ant 7

Django并不提供开箱即用的模型多态性.您尝试实现的最简单方法是在其中存储新对象的内容类型.有一个简单的通用应用程序叫做django-polymorphic-models,它为你提供了这个功能 - 另外还有一个downcast返回子对象的方法!

  • 我曾经使用过这种技术,直到找到更好的方法.[django-model-utils的'InheritanceManager](https://github.com/carljm/django-model-utils/)不需要额外的内容类型字段,并且可以在单个查询中获得异构结果集,这要归功于内部`select_related`用法. (2认同)

Ign*_*ams -2

来自文档

如果您的 aPlace也是 a Restaurant,则可以使用模型名称的小写版本从一个对象获取Place到另一个对象...Restaurant