gpt4 book ai didi

python - 将函数的输出传递给 django 过滤器

转载 作者:太空宇宙 更新时间:2023-11-03 19:29:26 25 4
gpt4 key购买 nike

我有一个场景,我必须将函数的输出传递给 Django 自定义过滤器。考虑对象:

class Money(object):
def __init__(self, amount):
self.amount = amount

class ConversionRate(object):

def GetEuroRate(self):
... some calculation and return a float value.


def GetGBPRate(self):
... some calculation and return a float value.


..... more functions.

我已将货币和汇率实例作为上下文变量传递。我正在尝试传递不同的转化率。在此示例中,“money”和“conversion_rate”是分别引用 Money 对象和 ConversionRate 对象的上下文变量。

 {{ money|convert:conversion_rate.GetEuroRate }}

我的过滤器代码:

@register.filter
def convert(first_value, second_value):
"""Returns the product to two numbers."""
return float(first_value * float(second_value)

在我的自定义过滤器中,conversion_rate.GetEuroRate() 始终返回 0,而不是实际值。有没有办法传递函数的输出?

谢谢

卡提克

最佳答案

我复制了您的类(class)和过滤器,以下内容对我有用:

#template_additions.py
from django import template
register = template.Library()

@register.filter
def convert(value, conversion_rate):
return float(value * conversion_rate)

#models.py
class Money(object):
def __init__(self, amount):
self.amount = amount

class ConversionRate(object):
def __init__(self, euro_rate):
self.euro_rate = euro_rate

def euro_rate(self):
return float(self.euro_rate)

#views.py
from django.shortcuts import render
from your_app.models import Money, ConversionRate

def test(request):
money = Money(amount=100)
conversion_rate = ConversionRate(euro_rate=0.90)
return render(request, 'test.html', {'money' : money,
'conversion_rate' : conversion_rate})

#test.html
{% load template_additions %}
{{ money.amount|convert:conversion_rate.euro_rate }}

输出:90

关于python - 将函数的输出传递给 django 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6688312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com