有没有一种方法可以只对超类进行一次查询,然后获取 django 中所有相应子类的列表?[复制]

StackOverflow https://stackoverflow.com//questions/9674046

可能的重复:
Django模型继承查询中央表

按照此处找到的官方文档进行操作
https://docs.djangoproject.com/en/dev/topics/db/models/#multi-table-inheritance

我发现我可以通过以下方式查询超级餐厅的地方

p = Place.objects.filter(name="Bob's Cafe")

那么,有没有一种方法可以检查返回的对象是否也是子类 Restaurant 类型,如果是,则访问其子类字段?

目前我所能告诉的是,所有返回的对象都是 Place 类,并且它们的子类属性和方法不可用,因为该对象没有被转换为其子类。

如果这种方法不可行,那么在尝试获取包含所有子类模型的列表时,尝试抽象超类并最小化查询开销的最佳实践是什么?我理解理论上我可以对每个子类进行查询,然后将列表组合在一起,但是如果我想按日期排序该列表,我将不得不做更多的事情。

有帮助吗?

解决方案

那么,有没有一种方法可以检查返回的对象是否也是子类 Restaurant 类型,如果是,则访问其子类字段?

如果您查询了 Place 模型,则返回的对象是 Place 实例,不知道任何 MTI 关联的子类。您需要在超类上提供一个字段以向下链接到子类。看 在 Django 中使多表继承设计通用

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top