我如何从模型中获取字段并计算一些字段并将它们传递给我的模板?
Posted
技术标签:
【中文标题】我如何从模型中获取字段并计算一些字段并将它们传递给我的模板?【英文标题】:How i can fetch fields from models and calculate some filed and pass them to my template? 【发布时间】:2022-01-19 12:42:35 【问题描述】:我的模型.py
class Main(models.Model):
name= ....
amount = models.PositiveIntegerField(default=40000)
在我看来:
def mainf(request):
listmain = models.Main.objects.all()
for data in listmain:
value = data.amount * 5
calculated_data = data_and_value
context = 'main':calculated_data
return render(request,'main/main.html',context)
我如何从模型中获取字段并计算一些字段并将它们(calculated_data)传递给我的模板?
例如,我想按小时计算工资。我想从数据库中获取小时数并计算小时数*500,然后将小时数和工资发送到我的模板。
data_and_value
可以是对象或任何东西。我想得到这个并发送到我的模板
【问题讨论】:
你的问题不清楚。您是否尝试使用value
注释每个对象?您是否要对每个对象求和 amount
?
您能否在模型中添加字段以提供适当的示例,例如您的模型包含小时/工资/任何字段、示例数据、预期输出和您要使用的模板?很难判断您是想用每个对象的计算值(每个用户的工资)来注释查询集还是只需要一个聚合值
【参考方案1】:
要么将它们定义为模型上的属性,要么通过上下文将它们传递给模板。
如果值完全基于一个模型实例中的字段,最好定义一个属性。例如,
class Thing( models.Model)
# Thing has height, width, depth fields
...
@property
def adjusted_volume(self):
return (self.height+10) * (self.width+10) * (self.depth+10)
在您的模板中(实际上是在您的代码中)您现在可以引用 thing.adjusted_volume
,假设thing
已包含在上下文中,无论是显式地还是通过基于类的视图的context_object_name="thing"
您的问题显示了将不限于单个对象实例的计算结果传递给模板的示例,您可以在模板中将其称为 main
(但代码不正确,value
被重复计算并且然后循环扔掉,data_and_value
没有定义)。
【讨论】:
以上是关于我如何从模型中获取字段并计算一些字段并将它们传递给我的模板?的主要内容,如果未能解决你的问题,请参考以下文章