Ich kann nicht herausfinden, wie mehrere Argumente in benutzerdefinierten Vorlagenfilter gesendet werden.Django - Zeichenfolge aus Variable in Template-Tag
Das Problem ist, dass ich Template-Variablen als Argumente verwenden.
CUSTOM TEMPLATE FILTER
@register.filter
def is_scheduled(product_id,dayhour):
day,hour = dayhour.split(',')
return Product.objects.get(id=product_id).is_scheduled(day,hour)
NORMAL USE
{% if product.id|is_scheduled:"7,22" %}...{% endif %}
Die Linie oben würde ich legte zwei Argumente korrekt wie arbeiten - 7 und 22 in den Filter (getestet - Werke) . Das Problem ist, dass ich Variablen anstelle von Klartext/String als Argument setzen möchte.
In meiner Vorlage:
{% with day=forloop.counter|add:"-2" hour=forloop.parentloop.counter|add:"-2" %}
Jetzt will ich {{ day }}
und {{ hour }}
als ein Argument verwenden.
Ich habe versucht, zum Beispiel:
{% if product.id|is_scheduled:"{{ day }},{{ hour }}" %}...{% endif %}
Aber das wirft:
Ausnahmewert: ungültige wörtliche für int() mit Basis 10: '{{Tag}}'
Haben Sie Ideen?
Leider ist dies nicht funktioniert. Ich bin mir nicht sicher warum. Wahrscheinlich sind Tag und Stunde Ganzzahlen. Es gibt zurück: Exception Wert: \t 'int' Objekt hat kein Attribut 'Split' und wenn ich Taghour-Variable drucke es druckt 0 statt "0,2" zum Beispiel. –
Ich aktualisierte die Antwort, um eine Typkonvertierung einzubeziehen –
Scheint wie ein guter Ansatz, aber es gibt ein Problem, wahrscheinlich mit Syntax. Sie haben ein ungültiges Token erhalten: u'hour | stringformat: "s" 'Ich versuche herauszufinden, wo der Fehler liegt. –