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