2012-03-30 33 views
46

Có thể viết {{ myval.add:5 }}, {{ myval|add:value }} và thậm chí {{ myval|add:-5 }}.Phép trừ trừ trong các mẫu django

Tuy nhiên, tôi không thể tìm ra những gì tôi nên nhập để thêm giá trị * -1 như {{ myval|add:-value }}. Điều này không hiệu quả, thật đáng buồn.

Trả lời

51

Việc xây dựng trong Django mẫu thẻ/lọc không bao gồm tất cả, nhưng đó là siêu dễ dàng để viết riêng mẫu tùy chỉnh các thẻ của bạn: https://docs.djangoproject.com/en/1.4/howto/custom-template-tags/

Bạn có thể làm của riêng subtract mẫu thẻ khá dễ dàng:

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

không cần một mẫu thẻ cho một nhiệm vụ như vậy. Xem câu trả lời của Simeon. – rom

+0

Câu trả lời của Simeon không trả lời câu hỏi, vì nó liên quan đến trừ đi bởi một số tiền được xác định trong một biến. – Teekin

82

Bạn cần phải sử dụng dấu ngoặc kép:

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

này sẽ trừ năm từ myval.

+12

Tôi cần trừ giá trị khỏi biến. – aemdy

+4

Có thể làm cho giá trị âm trong chế độ xem thay vì trong mẫu không? –

+4

Cảm ơn bạn, tôi đã cố gắng để xây dựng một bộ lọc trừ tất cả thời gian này và điều này thậm chí còn dễ dàng hơn haha ​​ – JREAM

8

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

cài đặt: $ pips cài đặt django-mathfilters trong mẫu

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

Những điều này nên được bao gồm trong phân phối chính của Django, theo ý kiến ​​của tôi. – Teekin

Các vấn đề liên quan