如何在django模板中使用来自mongoengine模型的属性

时间:2013-11-10 20:40:31

标签: django mongodb django-models mongoengine

我正在和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属性。对于以前存在的名词(或任何类型),以及在此代码更改后生成的新名词,都是如此。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

def noun_cls()更改为def noun_cls(self)会有效!

如果您使用的是Django模板引擎,它将忽略“不存在”属性。

在您的情况下,您的def noun_cls()遗失self,django没有提供任何内容,而是提出异常。