2016-08-24 3 views
0

テンプレートでフィルタを使用して、キーが一致する行に値を配置する方法を教えてください。テンプレート内のフィルタを使用して、特にdjangoにデータを配置する

たとえば、内部ODキー行1のすべての値は、そのキーの値を持つ必要があります。 次に、行2は、行2値のODキーのすべての値を持つ必要があります。すべてのヘルプは大幅に

をいただければ幸いです

はここにここに私のview.py

@login_required 
def shipping(request, id): 
    sheet_data = Sheet.objects.get(pk=id) 
    work_order = sheet_data.work_order 
    customer_data = Customer.objects.get(id=sheet_data.customer_id) 
    customer_name = customer_data.customer_name 
    title_head = 'Shipping-%s' % sheet_data.work_order 
    complete_data = Sheet.objects.raw("""select s.id, d.id d_id, s.work_order, d.target, i.reading, d.description, i.serial_number from app_sheet s left join app_dimension d on s.id = d.sheet_id 
    left join app_inspection_vals i on d.id = i.dimension_id""") 

    for c_d in complete_data: 
    dim_description = Dimension.objects.filter(sheet_id=c_d.id).values_list('description', flat=True).distinct() 

    dim_id = Dimension.objects.filter(sheet_id=c_d.id)[:1] 
    for d_i in dim_id: 
     dim_data = Inspection_vals.objects.filter(dimension_id=d_i.id) 
     reading_data = Inspection_vals.objects.filter(dimension_id=d_i.id)  

    key_list = [] 
    vals_list = [] 

    for xr in complete_data: 

    key_list.append(xr.description) 
    vals_list.append(xr.reading) 

    #print reading_desc 
    sample_size = dim_data 
    res = {} 
    for i in range(len(key_list)): 
    if key_list[i] in res: 
     res[key_list[i]].append(vals_list[i]) 
    else: 
     res[key_list[i]]=[vals_list[i]] 

    reading_desc = res 

    return render(request, 'app/shipping.html', 
    { 
    'work_order': work_order, 
    'sample_size': sample_size, 
    'customer_name': customer_name, 
    'title': title_head, 
    'complete_data': complete_data, 
    'dim_description': dim_description, 
    'reading_desc': reading_desc, 
    }) 

で正しくごとに、正しいキーと値を使用していますreading_descの出力があります。ここで

{u'Inner OD': [2, None, None, 1, 1, 1, 6, 1, 2, 4, 5, 5, 7, 1, 1, 2, 3, 4, 5, 1, None, 3, 4, 6], u'Outter OD': [3, 4, 5, 1, 3, 2, 2, 2, 2, 1, 1, 1, 1, 3, 4, 3, 5, 6, 5, 2, 3]} 

私のテンプレートshipping.htmlはここ

<div class="container"> 
    <div class="row"> 
     <div> 
     <table > 
      <thead> 
      <tr> 
      <th>Serial Number</th> 
      {% for ss in sample_size %} 
       <th>{{ ss.serial_number }}</th> 
      {% endfor %} 
      </tr> 
      </thead> 
      <tbody> 
      {% for desc in dim_description.all %} 
      <tr> 
       <th> {{ desc }}</th> 
       {% for r_c in reading_desc %} 
        <td class="{% cycle r_c, r_c %}"> {{ r_c }} </td> 
       {% endfor %}     
      {% endfor %} 
      </tr> 
      </tbody> 
     </table> 
    </div>  
    </div> 
</div> 

である私は、それはその後、ここで行く

よし

Filter

+0

したがって、辞書を繰り返し処理し、キーと値を表形式で表示する方法を尋ねていますか? –

+0

基本的にはい@MichaelPlatt – Snowman08

答えて

1

ようになりたいものです。これは、Djangoを使用してhtmlページの辞書をループする方法です。

<tbody> 
    <tr> 
    {% for desc in dim_description.all %} 
     <th> {{ desc }}</th> 
    {% endfor %} 
    </tr> 
    {% for key, values in reading_desc.items %} 
    <tr> 
     <td class="some_class_here"> {{ key }} </td> 
     {% for v in values %} 
     <td class="some_class_here">{{ v }}</td> 
     {% endfor %} 
    <tr> 
    {% endfor %}     
</tbody> 

これで十分です。ここではいくつかのことが起こっています。最初に、dim_descriptionリストを反復する最初のループでは、<th>タグの数を1行追加して、ヘッダー(ケース1-24)を表示します。その後、2番目のループで辞書をループします。キー(最初の反復の内部OD)を表示することから始まり、各キーのすべての値(ページの2番目のforループの内側のforループ)をループしなければなりません。これは完全な答えではないかもしれませんが、それはあなたの問題に取り組むのに十分な骨を与えるはずです。

+1

ありがとうございました! @Michael Platt – Snowman08

関連する問題