2013-10-07 141 views
0

有一个项目在哪里models.py看起来是这样的:Django模型。检索类的模型

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类,而不检查News中是否存在page_id

回答

1

只给定page_id价值是没有办法来测试ID值是否存在如News表中除了Page表中的其他条目比试图检索它(例如使用page.news,并在其不存在的情况下捕获DoesNotExist例外)或针对News管理器的直接查询。针对Page模型的经理的查询将返回Page个实例 - 您必须先在您的视图中先验地知道您想要News,或者测试是否存在。

-1

你可以看看isinstance

page = get_object_or_404(Page, id=page_id)  
isinstance(page, News): 
+0

这永远不会返回“真”。如果get_object_or_404返回任何内容而不是引发异常,那么'get_object_or_404'将返回你给它的类的一个实例。 –

+0

是的,我起初误解了这个问题,并意识到这不会工作,因为您正在检索一个Page对象实例 – Charl