我的 Django 模型:
class myModel(models.Model):
myIntA = models.IntegerField(default=0)
我的观点:
myModelList = myModel.objects.all()
for i in range(len(myModelList)):
myModelList[i].myIntB = i
return render(
request,
'myApp/myTemplate.html',
Context(
{
"myModels": myModelList,
}
)
)
以上行为合法吗?您可以看到我向每个 myModel 对象添加了一个变量 myIntB。 但是,当我尝试在下面的模板中打印 myIntB 时,没有任何显示。 如何从模板访问 myIntB?这不是我为该模型定义的字段,我也不希望如此。我只是希望在渲染此特定模板期间使用此额外变量来增强 myModel。
我的模板:
{% for currModel in myModels %}
{{currModel.myIntA}}<br/>
{{currModel.myIntB}}<br/>
{% endfor %}
最佳答案
替换以下行:
myModelList = myModel.objects.all()
与:
myModelList = list(myModel.objects.all())
否则,每次访问myModelList[i]
时都会执行新的查询;您将丢失所做的更改。
或者,您想要的只是计数器,您可以在模板中使用 forloop.counter
或 forloop.counter0
。
关于django - 如何向 Django 模型添加额外数据以在模板中显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19762288/