Django模型。检索模型的类

时间:2013-10-07 06:19:33

标签: django django-models

有一个models.py看起来像这样的项目:

class Page(models.Model)
    #fields

class News(Page)
    #no fields

当我想要检索PageNews页面时,我会执行以下操作:

page = get_object_or_404(Page, id=page_id)

但是,当我这样说时:page.__class__我总是这样:main.models.Page

有没有办法知道某个网页实际上是Page课程还是News课程而不检查page_id中是否存在News

2 个答案:

答案 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):