我正在尝试将完整对象实例从我的django模板传递到我的视图,作为与复选框输入相关联的值。当我尝试这样做时,我只获得对象的unicode方法表示,因此无法访问视图中任何对象的特定字段。
是否有一种方法可以将实际对象从模板传递到视图,或者是一种在视图中使用该unicode表示来访问实际对象及其相应字段的方法? 我不想使用'publication.id'作为我的复选框值,因为我不能保证id永远不会改变。
当前代码:
mytemplate.html
<form method="get" action="processData">
{% for publication in mydata %}
<input type="checkbox" name="item-selection" value="{{publication}}">
{% endfor % }
view.py
items = request.GET.getlist('item-selection')
for x in items:
print x # this prints the unicode mehtod's return value
x.datafield1 # I want to access each object's data
答案 0 :(得分:0)
不,这可能无法正常工作:通过HTTP帖子将数据从浏览器发送到视图,您只能发布数据,不能发布对象。
但是你自己说过这个解决方案:使用ID。谁在乎ID是否会改变?重要的是你获得了目前的ID。
<input type="checkbox" name="item-selection" value="{{publication.id}}"><label>{{ publication.name }}</label>
...
item_ids = request.GET.getlist('item-selection')
items = Item.objects.filter(id__in=item_ids)