有没有一种方法可以只对超类进行一次查询,然后获取 django 中所有相应子类的列表?[复制]
-
12-12-2019 - |
题
可能的重复:
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 中使多表继承设计通用
不隶属于 StackOverflow