2012-03-30 132 views
46

Es capaz de escribir {{ myval.add:5 }}, {{ myval|add:value }} e incluso {{ myval|add:-5 }}.resta de variable en plantillas django

Sin embargo, no puedo encontrar lo que debería escribir para agregar valor * -1 como {{ myval|add:-value }}. Esto no funciona, por desgracia.

Respuesta

51

la incorporada en las etiquetas de Django/filtros no son todo lo abarca, pero es muy fácil de escribir sus propias etiquetas de plantilla personalizada: https://docs.djangoproject.com/en/1.4/howto/custom-template-tags/

Se podría hacer su propia etiqueta subtract plantilla con bastante facilidad:

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

hay necesidad de una etiqueta de plantilla para tal tarea. Mira la respuesta de Simeon. – rom

+0

La respuesta de Simeon no responde a la pregunta, ya que se trata de restar en una cantidad definida en una variable. – Teekin

82

Es necesario utilizar comillas dobles:

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

Esto resta cinco de myval.

+12

Necesito restar el valor de la variable. – aemdy

+4

¿Es posible hacer que el valor sea negativo en la vista en lugar de en la plantilla? –

+4

Gracias, estaba intentando construir un filtro de resta todo este tiempo y esto es aún más fácil jaja – JREAM

8

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

instalar: $ PIP instalar Django mathfilters en la plantilla

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

Estos deberían incluirse en la distribución principal de Django, en mi opinión. – Teekin

Cuestiones relacionadas