Come fare la matematica in un modello Django?


103

Voglio farlo:

100 - {{ object.article.rating_score }} 

Quindi, ad esempio, l'uscita sarebbe 20se {{ object.article.rating_score }}eguagliata 80.

Come si esegue questa operazione a livello di modello? Non ho accesso al codice Python.

Risposte:


154

Puoi usare il addfiltro:

{{ object.article.rating_score|add:"-100" }}

37
Per la moltiplicazione e la divisione รจ possibile utilizzare in modo improprio il widthratiotag modello integrato . Per calcolare a * b utilizzare {% widthratio a 1 b %}, per a / b utilizzare {% widthratio a b 1 %}. Unico inconveniente, i risultati vengono arrotondati a un numero intero prima di tornare. Utilizzo del tag template widthratio di Django per moltiplicazione e divisione
elim

2
@Erik questa dovrebbe essere la sua risposta - soluzione molto migliore.
nhinkle

1
Link aggiornato da aggiungere in Docs
rnevius

E se utilizzo in questo modo: {{object.article.rating_score | add: "{% widthratio object.article.rating_score 100 5%}"}}
Mushahid Khan

@Daniel Roseman posso aggiungere dopo aver applicato una percentuale come questa: {{object.article.rating_score | add: "{% widthratio object.article.rating_score 100 5%}"}}
Mushahid Khan

31

Usa django-mathfilters . Oltre al filtro di aggiunta incorporato, fornisce filtri per sottrarre, moltiplicare, dividere e prendere il valore assoluto.

Per l'esempio specifico sopra, useresti {{ 100|sub:object.article.rating_score }}.


19

In genere si consiglia di eseguire questo calcolo nella visualizzazione. Altrimenti, puoi usare il filtro aggiungi.


Come lo fai all'interno del ciclo nel modello?
bismigalis
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.