从Django模板向视图传递完整的对象实例,而不仅仅是对象id

从Django模板向视图传递完整的对象实例,而不仅仅是对象id,django,django-forms,django-templates,Django,Django Forms,Django Templates,我试图将django模板中的完整对象实例作为与复选框输入关联的值传递给视图。当我尝试这样做时,我只获得对象的unicode方法表示,因此无法访问视图中对象的任何特定字段 是否有一种方法可以将实际对象从模板传递到视图,或者有一种方法可以在视图中使用该unicode表示来访问实际对象及其相应的字段? 我不想使用“publication.id”作为复选框值,因为我不能保证id永远不会更改 当前代码: mytemplate.html <form method="get" action="p

我试图将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    
mytemplate.html
{%在mydata%中发布}
{%endfor%}
view.py
items=request.GET.getlist('item-selection')
对于项目中的x:
打印x#打印unicode方法的返回值
x、 datafield1#我想访问每个对象的数据

不,这可能不起作用:通过HTTP post将数据从浏览器发送到视图,您只能发布数据,不能发布对象

但你自己也说过解决方案:使用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)