2016-08-19 5 views
1

Ich brauche Hilfe herauszufinden, wie ich meine HTML-Tabelle in einer Weise einrichten, die mir Probleme gibt, wenn jemand mir helfen kann herauszufinden, wie man es beheben und es wie die zweite aussehen Bild wäre toll.Daten nicht korrekt in meiner Vorlage für Django

* Exkurs Ich verwende Django

Also zuerst aus Ich habe drei Modelle, die ich in dieser Ansicht/Vorlage verwenden werden. Sie heißen "Sheet", "Dimension", "Inspeciton_vals", "mein Dimensionsmodell" hat einen "short_id" -Fehlentool, der mit "sheet_id" verknüpft ist. Mein Inspeciton_vals-Modell hat einen Fremdschlüssel, der mit "Dimension" verknüpft ist.

Hier mein views.py ist

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

hier sind meine Modelle

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) 

Schließlich hier ist meine Vorlage Was ich tun möchte, ist mein Kopf die Seriennummern sein. Dies basiert auf sample_size auf meinem Sheet-Modell. Nehmen wir an, ich habe 24 Sample-Größe und zeige 20 horizontale Zeilen. Als nächstes habe ich meine Dimensionsbeschreibung auf der rechten Seite jetzt mit der sample_size, die 24 ist. Ich werde 2 Dimensionen haben, die mit meinem Blattmodell verbunden sind, das wird jedes Mal auch ändern. Schließlich möchte ich den Messwert in den Rest der Tabelle für jedes Inspection_val und Dimension einfügen. Wenn ich also 2 Dimensionen mit einer sample_size von 24 habe, sollte ich 48 Inspeciton_vals haben, mit denen ich die korrekte Ablesung für die entsprechende Dimension und Serial verwenden möchte Nummer. Hier ist, was ich habe so 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> 

Hier ist, wie es jetzt Here is what It looks like now

sieht hier, was ich es möchte aussehen

Here is what I would like it to look like

Bonus hier ist, wie meine Daten aussehen

My Data

Fix nach der Antwort des Vorschläge anzeigt es immer noch nicht, wie ich es .. mögen würde

<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> 

Bild von dem, was es jetzt aussieht

New pic

Aktualisiert Code mit @ Michael Platt Vorschlag

@Michael Platt half, das HTML-Problem zu beheben, jetzt möchte ich ab sein Um die Lesung in zwei Hälften zu teilen, wird 24 auf die innere Od-Reihe und die nächsten 24 auf die äußere Od-Reihe gehen.

Answer pic

+0

einfach machen wollen, dass ich das verstehen richtig, bevor ich versuche zu helfen. Der Kopf des Tisches ist ok richtig? Was Sie jetzt sehen wollen, ist in der ersten Reihe "Inner OD 3" in der ersten Spalte, dann alle nachfolgenden Daten in ihren jeweiligen Spalten richtig? –

+0

Das ist @ Michael Platt korrekt, wenn die Lesedaten mit der Beschreibung in meinem Dimensionsmodell übereinstimmen. – Snowman08

Antwort

1

Ok, so weiß, dass ich denke, das ist Ihr Problem hier ist:

<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> 

Sie hatten ein extra <\tr> kurz vor Ihrem zweiten {% endfor %} in den <tbody> Tags. Ich habe es oben geändert, also denke ich, dass es das richtige Design geben wird, das du willst.Wenn es nicht zulassen, hat es mich wissen, aber es ist ein bisschen hart an meinem Ende zu testen, nur weil ich auf die App nicht haben und läuft :-)

Cheers,

+0

Perfekt jetzt alles, was ich tun muss, ist, die Reihen in zwei Hälften zu schneiden, so dass die Hälfte in der ersten Reihe inner od auftaucht und die andere Hälfte auf dem Outer od Ich werde meine Frage aktualisieren, um Ihnen zu zeigen, wie es jetzt aussieht. @Michael Platt – Snowman08

+0

Okay, angesichts Ihrer aktuellen Datenstruktur wird das ein bisschen schwer zu tun sein. Ich würde sagen, dass Sie darüber nachdenken müssen, wie Sie Ihre Daten in den übergebenen Variablen speichern, weil es schwierig sein könnte, eine Schleife auf halbem Weg in eine andere Reihe zu schneiden und dann wieder aufzunehmen. Vielleicht überlegen Sie, ein Wörterbuch zu implementieren und die Hälfte der Daten von 'complete_data' mit dem' inner_od'-Schlüssel und die andere Hälfte mit 'outer_od'-Schlüssel zu verknüpfen. @ Snowman08 –

+0

Okay, ich werde es einige Gedanken geben, In der Zwischenzeit werde ich Ihre Antwort außer für die Hilfe mich mein HTML in Ordnung zu bekommen :) @Michael Platt – Snowman08