2016-08-19 154 views
1

我需要幫助弄清楚如何設置我的html表格,如果有人可以幫我弄清楚如何修復它並使其看起來像第二個圖片會很棒。數據無法在我的django模板中正確顯示

*附註我使用Django

所以第一關我有我將使用在該視圖/模板三種模式。它們被稱爲圖紙,維度,Inspeciton_vals,我的維度模型有一個名爲sheet_id的折扣鏈接,鏈接到圖紙,我的Inspeciton_vals模型具有鏈接到維度的外鍵。

這裏是我的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個樣本大小顯示20個水平行。接下來是我將在右側有我的尺寸描述,sample_size是24我將有2個尺寸鏈接到我的工作表模型,每次都會改變。最後,我希望將讀數放在表格的其餘部分中,以用於每個Inspection_val和維度 - 所以如果我有2個具有24的sample_size的維度,我應該有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

與@邁克爾·普拉特建議

更新代碼
<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把分數讀出一半,這樣24行就會進入內部行,接下來的24行將進入外部行。

Answer pic

+0

只是想確保我明白這一點正確地在我嘗試幫助之前。桌子的頭部正確嗎?你現在想要看到的是第一列中的第一行「內部OD 3」,然後在它們各自列中的所有後續數據正確嗎? –

+0

如果閱讀數據與我的維度模型中的描述相匹配,則表示@Michael Platt正確。 – Snowman08

回答

1

好了,所以知道,我覺得這是你的問題就在這裏:

<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>標記你的第二個{% endfor %}之前有一個額外的<\tr>。我已經改變了它,所以我認爲它會給你想要的正確設計。如果不讓我知道,但它是一個有點難以測試在我結束,只是因爲我不具備的應用程序並運行:-)

乾杯,

+0

現在完美我需要做的就是將行切成兩半,這樣一半顯示在第一行內部,另一半顯示在外部,我會更新我的問題以向您展示它現在的外觀。 @Michael Platt – Snowman08

+0

好吧,給你目前的數據結構有點難。我想說你需要重新思考如何將數據存儲在傳入的變量中,因爲將循環切換到另一行然後再次拾取可能很困難。也許可以考慮實現一個字典並將'complete_data'的一半數據與'inner_od'鍵以及另一半與'outer_od'鍵相關聯? @雪人08 –

+0

好吧,我會給它一些想法,同時我會除了你的答案,幫助我得到我的HTML順序:) @Michael Platt – Snowman08