检查for循环中记忆的单选按钮选择

时间:2013-02-26 10:30:15

标签: django templates

我正在尝试保存关于从列表中选择的元素的会话信息(单选按钮),并在我返回页面时返回它。保存的选项存储在picked_id变量中。我通过在{{ picked_id }}之前添加input(type="radio")检查了它是否确实存在,并且我确认该视图提供了正确的值。

问题是我的代码不起作用。请帮我弄清楚这有什么问题:

{% if objects_list %}
<ul>
    {% for element in objects_list %}
    <li>
        <input type="radio" name="object" value="{{ element.id }}" {% ifequal picked_id element.id %}checked="checked"{% endifequal %}>
        {{ element.name }}
    </li>
    {% endfor %}
</ul>
{% else %}
    <p>{{ no_objects_mesage }}</p>
{% endif %}

1 个答案:

答案 0 :(得分:1)

根据你的回答:

  1. 您正在视图中的request.POST dict中设置picked_id的值。
  2. request.POST中的所有值默认为字符串。
  3. object_list可能是来自ORM的列表。
  4. 这意味着element.id是一个PK字段。
  5. 这将是一个int。
  6. 因此,在将其保存到会话之前,需要将'picked_id'强制转换为int。

    所以:

    request.session['picked_id'] = int(request.POST.get('object', 0))
    

    ......或者你在视野中这样做。