2

Djangoでmongoengineを使用しています。他のいくつかのクラス (Person、Place、Event など) が継承するクラス Noun があります。Noun クラスは次のようになります。

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 テンプレート エンジンを使用している場合、「存在しない」プロパティは無視されます。

あなたの場合、 your def noun_cls()is missing self、django は例外を発生させる代わりに何も与えません。

于 2015-04-16T03:12:19.747 に答える