数据在我的django模板中无法正确显示

时间:2016-08-19 12:09:58

标签: python html django

我需要帮助弄清楚如何设置我的html表格,如果有人可以帮我弄清楚如何修复它并让它看起来像第二张图片会很棒的话。

*旁注我正在使用Django

首先,我将在此视图/模板中使用三个模型。它们被称为Sheet,Dimension,Inspeciton_vals,我的Dimension模型有一个名为sheet_id的forgien键,它链接到sheet,我的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作为样本大小显示20个水平行。接下来我现在将右侧的维度描述与sample_size为24我将有2个维度链接到我的表单模型,这也将每次都改变。最后,我想将读数放在表的其余部分中,用于每个Inspection_val和维度 - 所以如果我有2个维度,sample_size为24,那么我应该有48个Inspeciton_vals,我想使用相应维度和序列的正确读数数。以下是我到目前为止的情况 -

<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 Platt建议更新了代码

<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问题我希望能够将读数分成两半,以便24将在内部od行上进行,接下来的24将在outter od行上进行。

Answer pic

1 个答案:

答案 0 :(得分: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> 

您在<\tr>代码中的第二个{% endfor %}之前有一个额外的<tbody>。我已将其改为上面所以我认为它将提供您想要的正确设计。如果它不让我知道但是因为我没有启动并运行应用程序而在我的终端上测试有点困难: - )

干杯,