gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 10:42:53 25 4
gpt4 key购买 nike

模型.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/

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