Python 视图中的Django多态性

Python 视图中的Django多态性,python,django,polymorphism,Python,Django,Polymorphism,使用Django多态性,我有以下模型: class Connection(models.Model): input = BaseInput() class BaseInput(PolymorphicModel): pass class ChildInput(BaseInput): name = 'child' 使用python控制台,由于Django多态性,执行BaseInput.objects.all()可以很好地自动解析为ChildInput 但是在视图.htm

使用Django多态性,我有以下模型:

class Connection(models.Model):
    input = BaseInput()

class BaseInput(PolymorphicModel):
    pass

class ChildInput(BaseInput):
    name = 'child'
使用python控制台,由于Django多态性,执行BaseInput.objects.all()可以很好地自动解析为ChildInput

但是在视图.html文件中,我通过Connection.objects.all()使用for循环(在上下文中给出)。如果我尝试访问ChildInput对象,如下所示:

c.input
(其中c是for循环中的连接) 它解析为“BaseInput对象”

因此,多态可以在python解释器中工作,但不能在视图中工作

有什么想法吗

(Python 3.4.1、Django 1.7.3、Django多态0.6.1)


您需要将
input
更改为
models.ForeignKey(BaseInput)
。这样,
input
被添加为
连接
模型上的数据库字段,而不仅仅是类上的属性

我认为这与控制台/视图无关,而是与
.objects
和相关字段有关。要确认这一点,您能否在控制台中
get()
a
Connection
,然后在那里尝试
c.input
?如果出现同样的问题,您可以发布完整的
BaseInput
模型吗?我怀疑这是默认管理器的问题。在控制台中会发生这种情况:
>>Connection.objects.all()[0]。输入
,但如果我这样做:
>>BaseInput.objects.all()[]
好的,你能发布你的
BaseInput
模型吗?实际上是这样的:
类BaseInput(多态模型):传递
没有其他内容,我刚开始这个项目。
BaseInput.\u default\u manager
BaseInput.\u meta.\u default\u manager
的输出是什么(忘记了哪一个)?
class Connection(models.Model):
    input = BaseInput()