django - 如何向 Django 模型添加额外数据以在模板中显示?

标签 django django-models django-templates django-views

我的 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.counterforloop.counter0

关于django - 如何向 Django 模型添加额外数据以在模板中显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19762288/

相关文章:

Django-请求中的用户代理模型

python - django:当 2 个字段具有相同值时过滤查询集

ios - native ios 应用程序的 Django 模板

python - 在 Get 请求中返回对象时出现 AttributeError '' 对象没有属性 'get'

django - 尝试在表中生成行

django - 将属性添加到酥脆的表单 django

python - 参数为none时查询django

django - 什么是运行 Django 时的 StatReloader?

django - Geodjango 的 Beanstalk 迁移失败

Django 'model' 对象不可迭代