【问题标题】:Is it advisible to use multiple django filters?是否建议使用多个 django 过滤器?
【发布时间】:2023-03-13 01:18:01
【问题描述】:

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

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

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

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

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

这样的级联过滤器可以使用吗?如果有其他更好的方法,请提出建议。

【问题讨论】:

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


    【解决方案1】:

    我过去曾遇到过此类问题。当您像以前那样使用多个过滤器时,可能会变得非常混乱。

    一种解决方案可能是声明一个模型函数。仅当您不依赖于另一个模型的属性时才能这样做。

    例子:

    class Loan(models.Model):  
        duration = models.IntegerField()
        emi = models.IntegerField()
    
        def duration_times_emi(self):
            return self.duration * self.emi
    

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

    {{ loan.duration_times_emi }}
    

    同样,只有在您可以访问 Loan 模型级别所需的所有变量时,这才会对您有用。

    【讨论】:

    • 可读性对我来说不是问题,我更担心功能上前所未有的错误。我宁愿在视图中做同样的事情并将其发送到模板,而不是创建模型。你怎么看?
    • 如果它是一次性案例并且您不必在其他地方重复此代码,您可以计算视图中的值并将其发送到模板。我想这就是你的解决方案!如果您找到更好的方法,请告诉我..
    猜你喜欢
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 1970-01-01
    相关资源
    最近更新 更多