是否建议使用多个 django 过滤器?
Posted
技术标签:
【中文标题】是否建议使用多个 django 过滤器?【英文标题】:Is it advisible to use multiple django filters? 【发布时间】:2016-10-23 05:43:06 【问题描述】:我有一种情况,我必须首先从对象实例中获取一个值,然后将它与另一个值相乘,然后从原始值中减去一些其他值。如果我使用多个过滤器可以吗?这是我的查询的快速演示。
我在template_filters.py
中有以下过滤器:
1) add():
2) subtract():
3) multiply():
4) calculate_emi():
我正在做以下操作。假设贷款是一个对象实例:
loan|calculate_emi|multiply:loan.duration|subtract|paid_emi
这样的级联过滤器可以使用吗?如果有其他更好的方法,请提出建议。
【问题讨论】:
【参考方案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 模型级别所需的所有变量时,这才会对您有用。
【讨论】:
可读性对我来说不是问题,我更担心功能上前所未有的错误。我宁愿在视图中做同样的事情并将其发送到模板,而不是创建模型。你怎么看? 如果它是一次性案例并且您不必在其他地方重复此代码,您可以计算视图中的值并将其发送到模板。我想这就是你的解决方案!如果您找到更好的方法,请告诉我..以上是关于是否建议使用多个 django 过滤器?的主要内容,如果未能解决你的问题,请参考以下文章
大 O 表示法:在 Django 模板中使用多个 forloops VS 在 views.py 中使用过滤器的多个查询