有一个models.py
看起来像这样的项目:
class Page(models.Model)
#fields
class News(Page)
#no fields
当我想要检索Page
或News
页面时,我会执行以下操作:
page = get_object_or_404(Page, id=page_id)
但是,当我这样说时:page.__class__
我总是这样:main.models.Page
。
有没有办法知道某个网页实际上是Page
课程还是News
课程而不检查page_id
中是否存在News
?
答案 0 :(得分:1)
只给出page_id
值除了尝试News
表之外,没有办法测试该ID值是否作为Page
表中的条目存在检索它(例如使用page.news
,并针对不存在的情况捕获DoesNotExist
异常)或直接查询News
管理器。针对Page
模型管理员的查询将返回Page
个实例 - 您必须在视图中知道您想要News
的先验或测试是否存在。
答案 1 :(得分:-1)
您可以查看isinstance
page = get_object_or_404(Page, id=page_id)
isinstance(page, News):