2016-08-19 56 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

相关问题