2011-12-30 2 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) 

: 나는 내가 좋아하는 일을 할 뷰에서 을 (A 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이있을 때 (I 현재 관련 속성 만 표시 할 것 상품)

루프에서 쿼리를 수행 할 수 있다면 매우 쉽습니다 (루프주기에 표시해야하는 속성 만 검색). 그래, 난 파이썬에서 HTML 요소를 만들 수 있지만 이후 꽤 바보 보인다 템플릿 엔진을 사용하고 있습니다.

그 방법을 알고 계십니까?

추신. 나는 변수 이름이 의미가 없다는 것을 알고 있지만 테스트하는 동안 짧은 것을 필요로한다.

답변

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 –

관련 문제