【问题标题】:How to add parentheses to math operations in django template?如何在 django 模板中为数学运算添加括号?
【发布时间】:2021-02-10 04:36:41
【问题描述】:

我有一个数学运算需要 Django 模板中的括号。但是,如果我把它们放在附件中,我会收到错误消息。当我删除它们时,程序正在运行,但结果不正确。 以下是我在模板中的代码:

{% if salaireImposable < 150000 %}
   <td> {{ salaireImposable|multiply:0.00|floatformat:0 }} </td>
{% elif  salaireImposable >= 150000 and salaireImposable <= 500000 %}
   <td> {{ 150000|add:"-0"|multiply:0.00|add:salaireImposable|add:"-150000"|multiply:0.05|floatformat }}</td>
{% elif salaireImposable >= 500000 and salaireImposable <= 1000000 %}
   <td>{{ 500000|add:"-150000"|multiply:0.05|add:salaireImposable|add:"-500000"|multiply:0.1|floatformat }}</td>
{% elif salaireImposable >= 1000000 and salaireImposable <= 1500000 %}
    <td>{{ 500000|add:"-150000"|multiply:0.05|add:(1000000|add:"-500000")|multiply:0.1|add:(salaireImposable|add:"-1000000")|multiply:0.15|floatformat}}</td>
{% elif salaireImposable >= 1500000 and salaireImposable <= 2500000 %}
   <td>{{500000|add:"-150000"|multiply:0.05|add:1000000|add:"-500000"|multiply:0.1|add:1500000|add:"-1000000"|multiply:0.15|add:salaireImposable|add:"-1500000"|multiply:0.2|floatformat:0 }}</td>
{% elif salaireImposable >= 2500000 and salaireImposable <= 3500000 %}
   <td> {{500000|add:"-150000"|multiply:0.05|add:1000000|add:"-500000"|multiply:0.1|add:1500000|add:"-1000000"|multiply:0.15|add:2500000|add:"-1500000"|multiply:0.2|add:salaireImposable|add:"-2500000"|multiply:0.25|floatformat:0 }}</td>
{% else %}
<td>{{ 500000|add:"-150000"|multiply:0.05|add:1000000|add:"-500000"|multiply:0.1|add:1500000|add:"-1000000"|multiply:0.15|add:2500000|add:"-1500000"|multiply:0.2|add:3500000|add:"-2500000"|multiply:0.25|add:salaireImposable|add:"-3500000"|multiply:0.30|floatformat:0 }}
</td>
{% endif %}

这是我在视图中的做法,结果还可以:

if float(salaireBrut) < 150000:
      salaireImposable = float(salaireBrut)*0.00
elif 150000 <= float(salaireBrut) <= 500000:
      salaireImposable=(150000-0)*0.00+(float(salaireBrut)-150000)*0.05
elif 500000 <= float(salaireBrut) <= 1000000:
      salaireImposable = (500000-150000)*0.05+(float(salaireBrut)-500000)*0.1
elif 1000000 <= float(salaireBrut) <=1500000:
      salaireImposable = (500000-150000)*0.05+(1000000-500000)*0.1+(float(salaireBrut)-1000000)*0.15
elif 1500000 <=float(salaireBrut)<= 2500000:
      salaireImposable = (500000-150000)*0.05+(1000000-500000)*0.1+(1500000-1000000)*0.15+\
                               (float(salaireBrut)-1500000)*0.2
elif 2500000 <= float(salaireBrut) <= 3500000:
      salaireImposable = (500000-150000)*0.05+(1000000-500000)*0.1+(1500000-1000000)*0.15+\
                               (2500000-1500000)*0.2+(float(salaireBrut)-2500000)*0.25
else:
      salaireImposable =(500000-150000)*0.05+(1000000-500000)*0.1+(1500000-1000000)*0.15+(2500000-1500000)*0.2+(3500000-2500000)*0.25+(float(salaireBrut)-3500000)*0.3
        

我想知道如何制作这样的括号:{{(500000|add:"-150000")|multiply:0.05|add:(salaireImposable|add:"-500000")|multiply:0.1}}以便结果正确。

请帮帮我

【问题讨论】:

    标签: python-3.x django-templates


    【解决方案1】:

    我通过在其模型中而不是在其视图或模板中计算相同的值来解决问题,结果很完美

    这是我的解决方案:

    def get_SalaireImposable(self):
        salaireImposable= Decimal(float(self.salaire_de_base + (self.mutuelle_de_sante*(Decimal(0.1))) + self.caisse_de_retraite + self.prime_d_anciennete + self.prime_de_logement + \
               self.heures_supplementaires + self.autre_prime)*12*0.7)
        return salaireImposable
    
    def get_IRPP(self):
    
        if self.get_SalaireImposable()<150000:
            total_irpp=float(self.get_SalaireImposable())*0.00
            return total_irpp
        elif 150000 <= float(self.get_SalaireImposable()) <= 500000:
            total_irpp = float((150000-0)*0.00+(float(self.get_SalaireImposable())-150000)*0.05)
            return total_irpp
        elif 500000 <= float(self.get_SalaireImposable()) <= 1000000:
            total_irpp=float((500000-150000)*0.05+(float(self.get_SalaireImposable())-500000)*0.1)
            return total_irpp
        elif 1000000 <= float(self.get_SalaireImposable()) <= 1500000:
            total_irpp=float((500000-150000)*0.05+(1000000-500000)*0.1+(float(self.get_SalaireImposable())-1000000)*0.15)
            return total_irpp
        elif 1500000 <= float(self.get_SalaireImposable()) <= 2500000:
            total_irpp=float((500000-150000)*0.05+(1000000-500000)*0.1+(1500000-1000000)*0.15+\
                                   (float(self.get_SalaireImposable())-1500000)*0.2)
            return total_irpp
        elif 2500000 <= float(self.get_SalaireImposable()) <= 3500000:
            total_irpp=float((500000-150000)*0.05+(1000000-500000)*0.1+(1500000-1000000)*0.15+\
                                   (2500000-1500000)*0.2+(float(self.get_SalaireImposable())-2500000)*0.25)
            return total_irpp
        else:
            total_irpp=float((500000-150000)*0.05+(1000000-500000)*0.1+(1500000-1000000)*0.15+(2500000-1500000)*0.2+\
                                  (3500000-2500000)*0.25+(float(self.get_SalaireImposable())-3500000)*0.3)
            return total_irpp
    

    【讨论】:

    • 这不是您最初问题的答案
    猜你喜欢
    • 2020-10-28
    • 2011-09-11
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 2018-02-21
    • 2011-09-13
    相关资源
    最近更新 更多