从Django模板传递完整的Object Instance,而不仅仅是对象id,以便查看

时间:2014-12-12 16:49:22

标签: django django-forms django-templates

我正在尝试将完整对象实例从我的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    

1 个答案:

答案 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)