python - 从 Django 模板访问字典/对象

标签 python django django-models django-templates

模型.py

class farm_model(models.Model):
  name=models.CharField(max_length=30)

View .py

def farms(request):
farms=farm_model.objects.all()
context = { 'farms': farms }
return render(request, 'farms.html', context)

农场.html

{% for farm in farms %}
<div style="top: {{ farm.map_top }}px; left: {{ farm.map_left }}px;">{{ farm.name }}</div>

如何将 map_top 和 map_left 添加到 views.py 中的农场对象? 我试过了

farms[0].map_top=80
setattr(farms[0],'map_top',80)

但是没有效果

我的第二个方法是在 views.py 中设置

farm_web_data={}
farm_web_data[1]={}
farm_web_data[1]['map_top']=80

但我不知道如何从模板访问这些数组

{% for farm in farms %}
<div style="top: {{ farm_web_data.{{ farm.pk }}.map_top }}px;

不工作

有什么想法吗? 我不想将 map_top 存储在数据库中

最佳答案

您第一次尝试的问题是切片查询集 - 就像您对 farms[0] 所做的那样 - 总是会访问数据库并获得一个新实例。也就是说,farms[0] 引用的对象与您稍后再次遍历查询集时获得的对象不同。

答案是直接将查询集转换为列表:然后您可以在实例上设置属性,后续访问将引用相同的实例。

farms = list(farm_model.objects.all())
farms[0].map_top = 80

关于python - 从 Django 模板访问字典/对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19444929/

相关文章:

python - Django 模型无法迁移

python - 如何在Python中测试对象是否具有类型dict_values?

python - 压缩格式 block 对角矩阵的高效线性代数

python - Django 应用程序与 Python 包有何不同?

Django 多对多关系

python - 将 Django 模型对象转换为 dict 并且所有字段都完好无损

python - python多久刷新一次文件?

python - cv2.PutText vs cv2.AddText 两者有什么区别?

python - 如何将来自 request.GET 的值作为 django-crispy-forms 中的隐藏输入

python - 在 save() 重写中读取外键引用引发 RelatedObjectDoesNotExist