0

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

遵循此处找到的官方文档
https://docs.djangoproject.com/en/dev/topics/db/models/#multi-table-inheritance

我看到我可以通过以下方式查询作为餐厅超级的 Place

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

那么到那时有没有办法检查返回的对象是否也是子类 Restaurant 类型,如果是,则访问它们的子类字段?

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

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

4

1 回答 1

1

那么到那时有没有办法检查返回的对象是否也是子类 Restaurant 类型,如果是,则访问它们的子类字段?

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

于 2012-03-14T18:16:36.717 回答