django表单字段作为列表,使用post

时间:2014-02-07 11:16:40

标签: javascript jquery python django

使用Django,我需要显示所有模型对象的列表,并通过单击选择1 例如:

forms.py:

class new_form(forms.Form):
    x = forms.ChoiceField(widget=forms.RadioSelect())

在我检查的视图中是请求有POST,如果没有,我正在创建新的表单实例并将其返回呈现给模板:

if request.POST:
 ...
form = new_form()
form.fields['x'].choices = model_x.objects.filter(FILTER CONDITION).values_list('id','name')
c['form']=form
return render(request, 'orders/tmplt.html',c)

在模板中我将表单字段(x)转换为列表,并向其添加jquery单击侦听器:

<script>
    $(document).ready(function(){
        $("#x_select li").click(function(){
            MY MISSING CODE
        });
    });
</script>

Please select:
<form id="form" action='#' method='post'>{% csrf_token %}
    {% if form.x.errors %}
        {{ form.x.errors }}
        <br>
    {% endif %}
    <ul id="x_select">
    {% for choice in form.x %}
        <li id="{{ choice.choice_value }}"> {{ choice.choice_label }} </li>
    {% endfor %}
    <ul>
    <br>
</form>

我想通过点击列表项来回发给客户选择的id值。

我该怎么做?

感谢。

2 个答案:

答案 0 :(得分:0)

$('li').click(function(){
    location = '/new/path/' + $(this).prop('id');
});

你的问题应该是“如何在点击时重定向到另一个页面”。这不是django或python问题。

答案 1 :(得分:0)

感谢大家的回答.. 最后我做到了这样: 1)创建单选按钮列表,使用django小部件(RadioSelect) 2)设计了用CSS隐藏的无线电

ul li input{ display: none; }

3)点击jquery(收音机和列表项):

<script>
    $(document).ready(function(){
        $("#x_select li ").click(function(){
            $('#x_form').submit();
        });
        $("#x_select li ").click(function(){
            $(this).find('input').attr('checked', true);
            $(this).find('input').click();
        });
    });
</script>