2012-11-08 3 views
5

Ich verwende django-tables2, um meine Tabelle für mich zu erstellen. Ich muss ein Template-Tag auf jede der Zellen() in einer der Spalten anwenden. Es scheint eine Menge zusätzlicher Anstrengung zu sein, ein benutzerdefiniertes Tabellenlayout zu erstellen und zu erstellen, nur um das Template-Tag auf die eine Spalte anzuwenden. Gibt es eine Möglichkeit, dies in django-tables2 zu tun?Ist es möglich, bei der Verwendung von django-tables2 ein Template-Tag auf eine anzuwenden?

Update:

Ich kann nicht erklärt habe, was ich für gut genug suchen. Ich glaube nicht, dass das funktionieren wird.

Mein Code:

class CombineTable(tables.Table): 
    build_no = tables.LinkColumn('run', args=[A('release'), A('id')], verbose_name="Build") 
    flavor = tables.Column(verbose_name="Flavor") 
    pass_rate_pct = tables.Column(verbose_name="Image Pass Rate") 

Ich mag, dass jeder in pass_rate_pct den Template-Tag verwenden {{pass_rate_color}} in der Klasse(), wo pass_rate_color gibt dann einen bestimmten Stil basierend auf dem, was die Ausgabe von pass_rate_pct ist.

Antwort

1

django_tables2 ermöglichen Sie zur Ausgabe von Tabellen eine alternative benutzerdefinierte Vorlage angeben. Nehmen Sie eine Kopie von django_tables2/templates/django_tables2/table.html und benennen Sie es z. table_pass_rate.html und geben Sie Ihren Tag auf Zeile 29:

{% pass_rate_color cell %} 

Nun, wenn die Tabelle Verwendung zu erzeugen:

{% render_table table "table_pass_rate.html" %} 

den django_tables2 Code Siehe für tags und die template für weitere Informationen.

+0

Dies ist, wie ich es ging, aber ich musste eine if-Anweisung in dort tun, so dass es Pass_rate_color nur für eine bestimmte Spalte tat, aber es hat funktioniert. Vielen Dank. – cjohnston

0

Versuchen Sie, die Table.render_FOO-Methode zu überschreiben, wobei foo der Spaltenname ist. Angenommen, Sie haben ein benutzerdefiniertes Schablonen-Tag geschrieben, das den Spaltenwert als Argument verwendet. zum Beispiel:

import django_tables2 as tables 

class SimpleTable(tables.Table): 
    custom_row = tables.Column() 
    id = tables.Column() 
    age = tables.Column() 

    def render_custom_row(self, value): 
     return '{% pass_rate_color %s %}' % value 
+0

Ich habe meine Frage oben bearbeitet. – cjohnston

+0

zum Schreiben von benutzerdefinierten Vorlagen-Tags siehe https://docs.djangoproject.com/en/dev/howto/custom-template-tags/ –

+0

Das Template-Tag existiert bereits. Ich versuche herauszufinden, wie man es durch tables.py weiterleitet. Zur Zeit wird es in der Quelle als einfacher Text angezeigt, anstatt dass der TemplateTag tatsächlich ausgeführt wird. – cjohnston

Verwandte Themen