2016-08-19 6 views
1
私は誰も私はそれを修正する方法を見つけ出すと、第2のように見えるように助けることができるかどうか、私に問題を与えているように、私のHTMLテーブルを設定する方法を考え出す助けが必要な

のための私のテンプレートで正しく表示されません絵はすばらしいでしょう。データはジャンゴ

私は最初のオフ、私はこのビュー/テンプレートで使用される三つのモデルを持っているジャンゴ

を使用しています*サイドノート。 Sheet、Dimension、Inspeciton_valsと呼ばれ、my Dimensionモデルにsheet_idという偽キーがあり、Inspeciton_valsモデルにはDimensionにリンクする外部キーがあります。ここで

は私のviews.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, 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) 
     sample_size = dim_data 


    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, 
    }) 

は私のモデルは、最後にここに

class Sheet(models.Model): 
    objects = SheetManager() 

    create_date = models.DateField() 
    updated_date = models.DateField() 
    customer_name = models.CharField(max_length=255) 
    part_number = models.CharField(max_length=255) 
    part_revision = models.CharField(max_length=255) 
    work_order = models.CharField(max_length=255) 
    purchase_order = models.CharField(max_length=255) 
    sample_size = models.IntegerField() 
    sample_scheme = models.CharField(max_length=255) 
    overide_scheme = models.IntegerField() 
    template = models.IntegerField() 
    sample_schem_percent = models.IntegerField() 
    critical_dimensions = models.IntegerField() 
    closed = models.IntegerField() 
    serial_index = models.CharField(max_length=255) 
    drawing_number = models.CharField(max_length=255) 
    drawing_revision = models.CharField(max_length=255) 
    heat_number = models.CharField(max_length=255) 
    note = models.CharField(max_length=255) 
    valc = models.CharField(max_length=255) 

class Dimension(models.Model): 
    description = models.CharField(max_length=255) 
    style = models.CharField(max_length=255) 
    created_at = models.DateField() 
    updated_at = models.DateField() 
    target = models.IntegerField() 
    upper_limit = models.IntegerField() 
    lower_limit = models.IntegerField() 
    inspection_tool = models.CharField(max_length=255) 
    critical = models.IntegerField() 
    units = models.CharField(max_length=255) 
    metric = models.CharField(max_length=255) 
    target_strings = models.CharField(max_length=255) 
    ref_dim_id = models.IntegerField() 
    nested_number = models.IntegerField() 

    met_upper = models.IntegerField() 
    met_lower = models.IntegerField() 
    valc = models.CharField(max_length=255) 
    sheet = models.ForeignKey(Sheet, on_delete=models.CASCADE, default=DEFAULT_FOREIGN_KEY) 

class Inspection_vals(models.Model): 
    created_at = models.DateField() 
    updated_at = models.DateField() 
    reading = models.IntegerField(null=True) 
    reading2 = models.IntegerField(null=True) 
    reading3 = models.IntegerField(null=True) 
    reading4 = models.IntegerField(null=True) 
    state = models.CharField(max_length=255) 
    state2 = models.CharField(max_length=255) 
    state3 = models.CharField(max_length=255) 
    state4 = models.CharField(max_length=255) 
    approved_by = models.CharField(max_length=255) 
    approved_at = models.DateField(null=True, blank=True) 
    dimension = models.ForeignKey(Dimension, on_delete=models.CASCADE, default=DEFAULT_FOREIGN_KEY) 
    serial_number = models.IntegerField(default=1) 

ある私が何をしたいのか、私のテンプレートは、私のヘッダはシリアル番号も持っているです。これは、私のシートモデルのsample_sizeに基づいているので、サンプルサイズとして24の横の行を表示するとします。次に、私は右側に私の次元の記述を持っています。ここではsample_sizeは24です。私は2次元を私のシートモデルにリンクさせています。これは毎回変わるでしょう。最後に、Inspection_valとディメンションごとにテーブルの残りの部分に値を入れたいと思います。したがって、24のsample_sizeを持つ2つのディメンションを持つ場合、48のInspeciton_valsを持つ必要があります。対応するディメンションとシリアル数。ここで私はそうfar--ここ

<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> 
      <tr> 
      {% for r_c in complete_data %} 
      <th> {{ r_c.reading }} </th> 
      {% endfor %} 
      </tr> 
      </thead> 
      <tbody> 
      {% for desc in dim_description.all %} 
      <tr> 
       <th> {{ desc }}</th> 
      </tr> 
      {% endfor %} 
      </tbody> 
     </table> 
    </div>  
    </div> 
</div> 

は今 Here is what It looks like now

ここでは、私はそれがここに

Here is what I would like it to look like

ボーナスのようになりたいものですようにそれが見えるものでなければならないものです私のデータは

My Data

次のようになります回答の提案後

修正はまだそれが今どのように見えるの

<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> 
       <td> {{ desc }}</td> 
      </tr> 
      {% for r_c in complete_data %} 
       <td> {{ r_c.reading }} </td> 
      {% endfor %} 

      </tr> 
      {% endfor %} 
      </tbody> 
     </table> 
    </div>  
    </div> 
</div> 

ピクチャー..私はそれにしたいと思いますどのようにそれを表示していない

New pic

@Michaelプラット提案

更新されたコード

<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> 
       <td> {{ desc }}</td> 
       {% for r_c in complete_data %} 
        <td> {{ r_c.reading }} </td> 
       {% endfor %} 
      {% endfor %} 
      </tr> 
      </tbody> 
     </table> 
    </div>  
    </div> 
</div> 

@Michael Plattがhtmlの問題を解決するのを助けました。私はab leを半分に分割すると、24は内側のod行になり、次の24は外側のod行に行きます。

Answer pic

+0

はちょうど私がこれを理解していることを確認したい場合私が助けようとする前に正しく。テーブルの頭は大丈夫ですか?あなたが今見たいのは、最初の列の「Inner OD 3」、その後のそれぞれの列のすべての後続データです。 –

+0

読み取りデータが次元モデルの記述と一致する場合は、@Michael Plattが正しくなります。 – Snowman08

答えて

1

[OK]をので、私は、これはここにあなたの問題だと思うことを知っている:

<tbody> 
    {% for desc in dim_description.all %} 
    <tr> 
     <td> {{ desc }}</td> 
     {% for r_c in complete_data %} 
     <td> {{ r_c.reading }} </td> 
     {% endfor %} 
    {% endfor %} 
    </tr> 
</tbody> 

あなただけ<tbody>タグ内の2番目の{% endfor %}前に余分な<\tr>を持っていました。私はそれを上に変更したので、あなたが望む正しいデザインが得られると思います。それは私に知らせていませんが、それは私がアプリを持っていると:-)

乾杯を実行していないという理由だけで私の最後にテストするために少し難しいですが、

+0

パーフェクト今は私がしなければならないことは、行を半分にカットすることです。半分が最初の行内に表示され、残りの半分がアウトラインに表示されます。 @Michael Platt – Snowman08

+0

あなたの現在のデータ構造には少し難しそうです。ループの途中で別の行を入れてからピックアップをやり直すのは難しいので、渡される変数にデータを格納する方法を再考する必要があると言います。おそらく、辞書を実装し、 'complete_data'のデータの半分を' inner_od'キーに関連づけ、他の半分を 'outer_od'キーに関連付けることを考慮してください。 @ Snowman08 –

+0

さて、私はそれをいくつかの考えを与えますが、私はあなたが私のHTMLを順番に取得するのを助けるためのあなたの答えを除きます:) @Michael Platt – Snowman08