0

データストアからアイテムのリストを取得するコードがあります。

彼らは次のように見えます:

class List(db.Model):
  name = db.StringProperty(multiline=True)

class Item(db.Model):
  name = db.StringProperty(multiline=True)
  created = db.DateTimeProperty(auto_now_add=True)
  completed = db.DateTimeProperty(auto_now_add=False)

Django テンプレートでは、表示するリスト要素が少なくとも 1 つある場合にのみ、テーブル ヘッダーを条件付きで表示したいと考えています。この難しさにビックリです。

例えば:

{% for list in lists %}
   <font size="+2"><b>{{ list.name }}</b></font><br>
   <table><tr><th>&nbsp;</th><th>item</th><th>created</th><th>completed</th></tr>
   {% for item in list.items %}
      {% ifnotequal item.completed None %}
        <tr><td>&nbsp;</td><td>{{ item.name }} </td><td>{{ item.created }} </td><td>{{ item.completed }} </td></tr>
      {% endifnotequal %}
   {% endfor %}
   </table>
{%endfor%}

条件に一致するアイテムがリストにない場合、次のような醜い空のテーブルが表示されます。

**todo**
item    completed   delete

私は次のようなことをしたいと思います.Djangoで変数を次のように設定します

{% set first = 1 %}

そして、テーブルに少なくとも1つのアイテムを出力しようとしているときに、次のようにします

   {% for item in list.items %}
      {% ifnotequal item.completed None %}
         {% if first %}
           <table><tr><th>&nbsp;</th><th>item</th><th>created</th><th>completed</th></tr>
           {% set first = 0 %}
         {% endif %}
       .... do the rest of the stuff
       {% endifnotequal %}

そこで、ここで説明されているように、appengine 内で適切に機能する Django 用のカスタム タグを作成するといううさぎの穴に落ちました。

1つのソリューション

別の解決策

非常に多くのエラーに遭遇し、これらのページのアドバイスを試してみました:

同様の問題を抱えている別の人

これではどこにも行きません。Python 2.7 を使用しています。これはそれほど難しくないはずです。

4

1 に答える 1

1

ここでは、カスタム テンプレート タグは必要ありません。

{% for list in lists %}
   {% for item in list.items %}
       {% if forloop.first %}     
           <font size="+2"><b>{{ list.name }}</b></font><br>
           <table><tr><th>&nbsp;</th><th>item</th><th>created</th><th>completed</th></tr>

これは、ヘッダーを内側の for ループに移動し、最初の繰り返しでのみ出力するだけです。リストが空の場合、その内部ループに入ることはなく、ヘッダーを出力することもありません。

于 2013-02-12T00:52:00.300 に答える