Làm thế nào để làm toán trong một mẫu Django?


103

Tôi muốn làm điều này:

100 - {{ object.article.rating_score }} 

Vì vậy, ví dụ, đầu ra sẽ là 20nếu {{ object.article.rating_score }}bằng nhau 80.

Làm cách nào để thực hiện việc này ở cấp mẫu? Tôi không có quyền truy cập vào mã Python.

Câu trả lời:


154

Bạn có thể sử dụng addbộ lọc:

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

36
Đối với phép nhân và phép chia, bạn có thể sử dụng sai widthratiothẻ mẫu có sẵn. Để tính toán sử dụng a * b {% widthratio a 1 b %}, sử dụng a / b {% widthratio a b 1 %}. Chỉ có nhược điểm, kết quả được làm tròn thành số nguyên trước khi trả về. Sử dụng mẫu thẻ widthratio Django cho nhân & bộ phận
Elim

2
@Erik đó phải là câu trả lời của riêng nó - giải pháp tốt hơn nhiều.
nhinkle

1
Cập nhật liên kết để thêm vào Tài liệu
rnevius

Điều gì sẽ xảy ra nếu tôi sử dụng như thế này: {{object.article.rating_score | add: "{% widthratio object.article.rating_score 100 5%}"}}
Mushahid Khan,

Tôi có thể thêm @Daniel Roseman sau khi áp dụng tỷ lệ phần trăm như thế này không: {{object.article.rating_score | add: "{% widthratio object.article.rating_score 100 5%}"}}
Mushahid Khan,

31

Sử dụng django-mathfilters . Ngoài bộ lọc cộng được tích hợp sẵn, nó cung cấp các bộ lọc để trừ, nhân, chia và lấy giá trị tuyệt đối.

Đối với ví dụ cụ thể ở trên, bạn sẽ sử dụng {{ 100|sub:object.article.rating_score }}.


19

Nói chung, bạn nên thực hiện phép tính này theo quan điểm của mình. Nếu không, bạn có thể sử dụng bộ lọc thêm.


Làm thế nào bạn làm điều đó bên trong vòng lặp trong mẫu?
bismigalis
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.