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.