在python中输入类型

Neo*_*Neo 2 python django inheritance

我在SO上看了类似的问题,但没有一个回答我的问题.对于Ex.如何将实例强制转换为派生类?.但答案似乎并不是我想要的.

这是我的情况.我有类似Django的类结构

class Base:
     ...some stuff...

class Derived(Base):
     ...some more stuff...
Run Code Online (Sandbox Code Playgroud)

现在,当我在Django中进行一些查询时,我总是得到Base类的对象.

 baseobj = get_object_or_404(Base, id = sid)
Run Code Online (Sandbox Code Playgroud)

在运行时,我还可以遇到具有一些额外属性的"派生"对象.我能够弄清楚一个对象是Base还是派生的(Base类对象中有足够的信息).但是我应该如何访问仅在Derived类中出现的那些额外字段.我无法贬低"基地" - >"衍生".我应该怎么处理?

编辑:

我解决了这个问题.Django在另一个表中存储Derived类的"附加属性".因此,由于这行代码而出现了问题.

baseobj = get_object_or_404(Base, id = sid)
Run Code Online (Sandbox Code Playgroud)

baseobj将始终为Base类,并且不具有Derived类的任何属性.我必须进行额外的查询以获取Derived类对象.

baseobj = get_object_or_404(Base, id = sid)
if baseobj.isDerivedType:
      derivedobj = get_object_or_404(Derived, id = sid)
Run Code Online (Sandbox Code Playgroud)

San*_*nta 9

Django-land 中的这种继承对我来说就像多表继承一样.根据文档,假设所有内容都正确连接,您应该能够:

baseobj.derived    # note: small 'd'
Run Code Online (Sandbox Code Playgroud)