使用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值。
我该怎么做?
感谢。
答案 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>