是否可以使用多个django过滤器?

时间:2016-06-21 15:20:19

标签: django django-models django-templates django-views django-filter

我有一个案例,我必须首先从一个对象实例获取一个值,然后将其与另一个值相乘,然后从原始值中减去一些其他值。如果我使用多个过滤器可以吗?这是我查询的快速演示。

我在template_filters.py中有以下过滤器:

1) add():
2) subtract():
3) multiply():
4) calculate_emi():

我正在做以下操作。假设贷款是一个对象实例:

   {{ loan|calculate_emi|multiply:loan.duration|subtract|paid_emi }}

使用这种级联滤波器是否可以?如果还有其他更好的方法,请建议。

1 个答案:

答案 0 :(得分:0)

我过去遇到过这种类型的问题。当您使用多个过滤器时,它会变得非常混乱。

解决方案可以是声明模型函数。只有在不依赖于其他模型的属性时才能执行此操作。

示例:

class Loan(models.Model):  
    duration = models.IntegerField()
    emi = models.IntegerField()

    def duration_times_emi(self):
        return self.duration * self.emi

可以在模板中的模型实例上调用此函数:

{{ loan.duration_times_emi }}

同样,如果您可以访问贷款模型级别所需的所有变量,这将对您有用。