2014-02-07 47 views
0

使用Django,我需要顯示所有模型對象的列表,並通過單擊它來選擇1。
例如:django表單字段作爲列表,使用郵政

forms.py:

class new_form(forms.Form): 
    x = forms.ChoiceField(widget=forms.RadioSelect()) 
在我檢查的觀點

是要求具有開機自檢,如果沒有,我創造新形式的實例,並返回其渲染到模板:

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

感謝所有爲你的答案.. 最後我做到這樣的: 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> 
0
$('li').click(function(){ 
    location = '/new/path/' + $(this).prop('id'); 
}); 

您的問題應該是「我怎樣才能重定向到另一個頁面點擊」。這不是一個Django或Python的問題。

+0

嗨,幾個問題:1)我希望能夠在以後添加更多的領域,所以我需要硬編碼的所有字段在數據對象中。 2)我也需要csrf_token。有沒有更順利的方法來做到這一點? – gabi

+0

我不需要Ajax,我需要它將我的窗口重定向到新頁面。 – gabi

+0

不只是重定向 - 我需要POST和完整的Django形式... – gabi

相關問題