2012-03-30 14 views
46

È in grado di scrivere {{ myval.add:5 }}, {{ myval|add:value }} e anche {{ myval|add:-5 }}.Sottrazione variabile nei modelli Django

Tuttavia, non riesco a trovare cosa devo digitare per aggiungere valore * -1 come {{ myval|add:-value }}. Questo non funziona, purtroppo.

risposta

51

il built-in Django tag template/filtri non sono onnicomprensiva, ma è super facile da scrivere i propri tag modello personalizzato: https://docs.djangoproject.com/en/1.4/howto/custom-template-tags/

Si potrebbe creare il proprio tag subtract modello abbastanza facilmente:

@register.filter 
def subtract(value, arg): 
    return value - arg 
+3

senza bisogno di un tag modello per un tale compito. Vedi la risposta di Simeon. – rom

+0

La risposta di Simeon non risponde alla domanda, in quanto si riferisce alla sottrazione per un importo definito in una variabile. – Teekin

82

è necessario utilizzare le virgolette:

{{ myval|add:"-5" }} 

Questo sottrae cinque da myval.

+12

Ho bisogno di sottrarre valore dalla variabile. – aemdy

+4

È possibile rendere il valore negativo nella vista anziché nel modello? –

+4

Grazie, stavo cercando di costruire un filtro di sottrazione per tutto questo tempo e questo è ancora più semplice haha ​​ – JREAM

8

https://pypi.python.org/pypi/django-mathfilters

installare: $ pip installare django-mathfilters nel modello

{% load mathfilters %} 

<ul> 
    <li>8 + 3 = {{ 8|add:3 }}</li> 

    <li>13 - 17 = {{ 13|sub:17 }}</li> 

    {% with answer=42 %} 
    <li>42 * 0.5 = {{ answer|mul:0.5 }}</li> 
    {% endwith %} 

    {% with numerator=12 denominator=3 %} 
    <li>12/3 = {{ numerator|div:denominator }}</li> 
    {% endwith %} 

    <li>|-13| = {{ -13|abs }}</li> 
</ul> 
+3

Questi dovrebbero essere inclusi nella distribuzione principale di Django, a mio parere. – Teekin