2

我在 Django 中使用 mongoengine。我有一个类 Noun,其他几个类(Person、Place、Event 等)从该类继承。名词类看起来像这样:

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]//”的 url。就好像 noun_cls 属性被完全忽略了。对于先前存在的名词(或任何类型)以及在此代码更改后生成的新名词都是如此。有任何想法吗?

4

1 回答 1

0

更改def noun_cls()def noun_cls(self)将工作!

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

在您的情况下,您的def noun_cls()is missing self,django 什么都不提供,而是引发异常。

于 2015-04-16T03:12:19.747 回答