2011-12-30 10 views
0

DBからいくつかのデータを表示する必要があります。私は私が使用したテンプレートで、その後必要なプロパティのリストを持って終わりdjango templateテンプレートでfkを持つモデルを扱う方法

orderitems = OrderItem.objects.all().filter(order=order) 
properties = [] 
for item in orderitems: 
    a = OrderItemDetail.objects.all().filter(orderitem=item) 
    b = [] 
    for x in a: 
     c = [x.detail.property.name, x.detail.value, x.detail.price, x.detail.detail_price_unit] 
    b.append(c) 
properties.append(b) 

:私は私のような何かをビューで(FK付き)のOrderItemおよびすべての関連OrderProperties を表示する必要が それら:

# orderitems loop - displaying item detail 
# displaying the properties 
{% for prop in properties %} 
    {% for x in prop %} 
      <big><b>{{x.0}}</b>: {{x.1}} (+{{x.2}} 
      {% if x.3 == "m" %} 
      &euro;/MQ 
      {% endif %} 
      {% if x.3 == "p" %} 
      % 
      {% else %} 
      &euro; 
      {% endif %} 
     )</big><br /> 
     {% endfor %} 
{% endfor %} 
のような出力を生成する必要があり

color: red (+0,0 €) すべてが正常に動作しますが、私は、各プロパティは、各レコードに印刷を受ける2つの以上のOrderItemsがある場合(私は現在に関連するプロパティのみを表示したいと思いますアイテム)

ループ内でクエリを実行することができます(ループサイクルで表示する必要があるプロパティのみを取得する)。ええ、私は、PythonでHTML要素を作成することができますが、私はかなり馬鹿だと思われるテンプレートエンジンを使用しているので。

あなたはそれを行う方法を知っていますか?

PS。私は変数名は無意味だと知っていますが、私はテスト中に短いものが必要です

答えて

2

私が正しく理解していれば、これが必要です。ビューで

orderitems = OrderItem.objects.all().filter(order=order) 

これは、テンプレート:

{% for order in orderitems %} 
    {% for detail in order.orderitemdetail_set.all %} 
     {{ detail.property.name }}... etc 
    {% endfor %} 
{% endfor%} 
+0

感謝を!それはまさに私が探していたものです! –

0

私は100%わからないんだけど、私はあなたがrelated_name functionalityを探しているかもしれないと思います。

あなたのビュー内のすべてのがらくたを必要としない、ことを使用し、あなたのテンプレートはこのようなものになります。

{% for item in order.orderitem_set.all %} 
    <!-- Print some stuff about the item --> 

    {% for item_detail in item.orderitemdetail_set.all %} 
     <!-- Do stuff with your item details --> 
    {% endfor %} 
{% endfor %} 
+0

Ook、今私たちは競争状態の問題=) –

+0

ハハ、それについて申し訳ありません。私はあなたの答えが来るのを見たとき、私はすでにエディタにすべて入力しました:-) –

+0

ありがとう、特に文書へのリンクありがとう! +1 –

関連する問題