Ho notato che c'è il filtro integrato add
, ma non sono riuscito a trovare divide
.Esiste un filtro per dividere per il modello Django?
Sono nuovo di Django e non sono sicuro se esiste un filtro di questo tipo.
Ho notato che c'è il filtro integrato add
, ma non sono riuscito a trovare divide
.Esiste un filtro per dividere per il modello Django?
Sono nuovo di Django e non sono sicuro se esiste un filtro di questo tipo.
Non c'è. Ma se siete un po 'di hacker ....
http://slacy.com/blog/2010/07/using-djangos-widthratio-template-tag-for-multiplication-division/
per calcolare un * B: {% widthratio A 1 B%}
di calcolare A/B: {% widthratio AB 1%}
per calcolare un^2: {% widthratio a 1 a%}
di calcolare (a + B)^2: {% widthratio a | aggiungere: B 1 a | aggiungere: B% }
di calcolare (A + B) * (C + D): {% widthratio A | aggiungere: B 1 C | aggiungere: D%}
Inoltre è possibile creare un filtro per la divisione in 2 minuti
Partenza http://djangosnippets.org/snippets/2424/
Speranza che ti aiuta.
Utilizzando un filtro personalizzato:
register = template.Library()
@register.filter
def divide(value, arg):
try:
return int(value)/int(arg)
except (ValueError, ZeroDivisionError):
return None
Dovresti gestire il caso del numero mobile, potrebbe essere utile qualche tempo :-) –
Potrebbe essere una divisione per zero, quindi suggerirei: 'def divide (value, arg): return (int (valore)/int (arg)) if int (arg)! = 0 else 0 ' – jobima
vorrei utilizzare un modello personalizzato, ma se non si desidera è possibile utilizzare il widthratio costruita nel tag,
{% widthratio request.session.get_expiry_age 3600 1 %}
altro e xample
{% widthratio value 1150000 100 %}
Sintassi:
{% widthratio parm1 parm2 parm3 %}
Quindi, in pratica la sua utilizzati per il ridimensionamento delle immagini, ma è possibile utilizzarlo per la divisione. Quello che fa è: parm1/parm2 * parm3.
Spero che questo aiuti, più su widthratio here.
Esiste un modulo Python per eseguire operazioni matematiche nei modelli: Django-Mathfilters.
Contiene add
come hai detto, ma anche div
dividere:
8/3 = {{ 8|div:3 }}
Questo è un uso interessante del tag widthratio, ma, si potrebbe certamente lasciare qualcuno grattarsi la testa cercando di capire quello che sta facendo, imo. – Brandon
Grazie. Ma questo restituisce 'Caught TypeError durante il rendering: l'argomento float() deve essere una stringa o un numero? Errore per alcuni numeri – Sam
Boo broken link –