我正在和Django一起使用mongoengine。我有一个类,名词,其他几个类(人,地方,事件等)继承。名词类看起来像这样:
class Noun(Document):
label = StringField(max_length=120, required=True)
contributor = StringField(max_length=120, required=True)
description = StringField(required=False)
@property
def noun_cls():
return self._cls
meta = {'allow_inheritance': True}
当我尝试在模板中引用noun_cls属性时,我什么也得不到。例如:
{% for noun in Nouns %}
<li>
<a href="{{BASE_URL}}noun/update/{{ noun.id }}/{{ noun.noun_cls }}/">Edit {{ noun.noun_cls }}</a>
<p>{{ noun.description }}</p>
</li>
{% endfor %}
...这会产生一个像“... noun / update / [long mongo id] //”的网址。这就好像完全忽略了noun_cls属性。对于以前存在的名词(或任何类型),以及在此代码更改后生成的新名词,都是如此。有什么想法吗?
答案 0 :(得分:0)
将def noun_cls()
更改为def noun_cls(self)
会有效!
如果您使用的是Django模板引擎,它将忽略“不存在”属性。
在您的情况下,您的def noun_cls()
遗失self
,django没有提供任何内容,而是提出异常。