视图中的 Django 多态性

Django polymorphism in view

我有以下模型,使用 Django Polymorphic:

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

class BaseInput(PolymorphicModel):
    pass

class ChildInput(BaseInput):
    name = 'child'

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

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

c.input

(其中c是for循环中的连接) 它解析为 'BaseInput object'.

所以多态在 python 解释器中有效,但在视图中无效。

有什么想法吗?

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

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

您需要将 input 更改为 models.ForeignKey(BaseInput)。这样,input 将作为数据库字段添加到 Connection 模型中,而不仅仅是作为 class 中的属性。