2016-06-16 17 views
0

Die Tabellenklasse:Gibt es bei Verwendung von Django-tables2 eine Möglichkeit, alle Daten aus der HTML-generierten Tabelle dynamisch und clientseitig zu erhalten?

class TablaLechos(tables.Table): 
    lecho_no = tables.Column(empty_values=()) 
    distancia = InputColumn(empty_values=()) 
    varilla_no = InputColumn(empty_values=()) 
    area_varilla = tables.Column(default="-") 
    varillas_en_lecho = InputColumn(empty_values=()) 

Die Ansicht, dass das Tabellenobjekt zu der HTML-Datei senden:

def index(request): 
    """The home page of diseno_columnas""" 
    tabla = TablaLechos([{} for n in range(10)]) # Empty dict for 10 rows. 
    context = {'tabla': tabla} 
    return render(request=request, template_name='diseno_columnas/index.html', context=context) 

In der HTML-Datei:

{% render_table tabla %} 
<button type="button" name="button" class="btn btn-primary" onClick="methodThatNeedsTheData()">Graph!</button> 

Die App gemeint sind grafisch darzustellen Ein Diagramm auf einem HTML-Canvas-Element basierend auf der Dateneingabe der Tabelle. Die Schaltfläche wird bei jedem Drücken von JS und den tatsächlichen Tabellenwerten neu gezeichnet.

Antwort

0

Derzeit gibt es keine Standardmethode, dies zu tun. Eine mögliche Lösung könnte darin bestehen, die Daten, die Sie an die Tabelle übergeben, in JSON zu konvertieren, sie dem Kontext hinzuzufügen und sie Ihrer JavaScript-Funktion zur Verfügung zu stellen, indem Sie sie in Ihrer Vorlage ausgeben.

Eine weitere Option ist die Verwendung von Javascript, um die Werte aus der gerade gerenderten Tabelle abzurufen. Da Sie scheinbar Eingabefelder haben, die vom Benutzer geändert werden können und die Schaltfläche den Text 'Graph' hat, könnte dies die bessere Lösung für Ihren Anwendungsfall sein: Die Graphik wird die aktuellen Daten in der Tabelle widerspiegeln Anfangsdaten in der Tabelle, wenn die Seite gerendert wurde.

+0

Also die einzige clientseitige Option wird die Werte des DOM über JS holen? –

+0

Ja, ohne Anpassung auf der Django-Seite, das ist die einzige Option. Wenn Sie möchten, können Sie die Daten zum Kontext hinzufügen und diese als JSON rendern, wie der erste Teil meiner Antwort beschreibt. – Jieter