我有以下模型,使用 Django Polymorphic:
class Connection(models.Model):
input = BaseInput()
class BaseInput(PolymorphicModel):
pass
class ChildInput(BaseInput):
name = 'child'
由于 Django Polymorphic,使用 python 控制台,执行 BaseInput.objects.all() 可以很好地自动解析为 ChildInput。
但是在 .html 文件的 View 中,我通过 Connection.objects.all()(在上下文中给出)使用了一个 for 循环。如果我然后尝试像这样访问 ChildInput 对象:
c.input
(其中c是for循环中的连接) 它解析为“BaseInput 对象”。
所以多态在 python 解释器中有效,但在 View 中无效。
有什么想法吗?
(Python 3.4.1,Django 1.7.3,Django 多态 0.6.1)
请您参考如下方法:
class Connection(models.Model):
input = BaseInput()
您需要将 input 更改为 models.ForeignKey(BaseInput)。这样,input 将作为数据库字段添加到 Connection 模型中,而不仅仅是作为类的属性。
