0

テーブルの行ごとに2つ以上の値を表示できるdjangoテンプレートを作成する方法を探していましたが、

5 つの属性を持つクラスがあり、これらの属性値を HTML ページの表に表示したいとします。最初は辞書で試しましたが、5 つの属性のうち 2 つだけでは十分ではありません。

私のオブジェクトが次のようなものだとしましょう:

class ModelA(models.Model):
    ID = models.IntegerField(primary_key=True, db_column='ID') 
    name = models.CharField(max_length=60, db_column='name')
    yesorno = models.CharField(max_length=9, db_column='yes/no') 
    text = models.TextField(db_column='text') 
    description = models.TextField(db_column='description') 

ここで、ビューでこれらすべてのモデル属性を呼び出します。どのデータ構造ですべてを保存する必要があり、これら 5 つの属性すべてをテーブル内のオブジェクトごとに 1 つの行に配置するにはどうすればよいですか。(数百のオブジェクトをテーブルに表示する必要がある場合があります (つまり、100 行))

4

1 に答える 1

2

すべてのオブジェクトを取得します (それに応じてフィルタリングします)。

@init3 が指摘しているように、Django は ID を自動的に追加するため ID は不要でyesornoあり、Bool である必要があります。

# view.py

model_as = []
for id in ids:
    try:
        model_a = ModelA.objects.get(ID=id)
    except ModelD.DoesNotExist:
        # No model found
        pass
    else:
        model_as.append(model_a)

return render_to_response('template.html',
    {'model_as': model_as},
    context_instance=RequestContext(request))

テンプレート内のオブジェクトをループし、各変数を必要な列に出力します。

# template.html
<table>
{% for model_a in model_as %}
    <tr>
        <td>
            {{ model_a.ID }}
            {{ model_a.name }}
            {{ model_a.yesorno }}
            {{ model_a.text }}
            {{ model_a.description }}
        </td>
    <tr>
{% empty %}
    <tr>
        <td>No ModelAs to see here</td>
    <tr>
{% endfor %}
</table>
于 2012-09-27T08:18:57.373 に答える