2013-04-18 109 views
3

我有一個在模板中顯示爲下拉列表的表單。當用戶選擇一個選項時,會調用JavaScript函數並重新加載頁面。 我想使用request.POST.get(...)捕獲選定選項的值,但我無法設置提交作爲POST。我發現了一些使用ajax的方法,但我不熟悉它。有沒有更簡單的方法來做到這一點?Django modelchoicefield提交

home.html的:

<script> 
    function refresh(){ 
     window.location.href = 'http://127.0.0.1:8000/home'; 
    } 
</script> 

<form> 
    {{ days }} 
</form> 

models.py:

class Date(models.Model): 
    day = models.CharField(max_length=200, default='') 
    month = models.CharField(max_lenght=200, default='') 
    def __unicode__(self): 
     return self.day 

class CronForm(forms.Form): 
    days = forms.ModelChoiceField(queryset=Date.objects.all().order_by('alias'), widget=forms.Select(attrs={"onChange":'refresh()'})) 
+1

不知道爲什麼downvotes,似乎是一個非常好的問題給我。 – donturner

回答

5

提交關於變化形式

class CronForm(forms.Form): 
    days = forms.ModelChoiceField(queryset=Date.objects.all().order_by('alias'), 
      widget=forms.Select(attrs={"onChange":'submit()'})) 

和編輯模板

<form method=post> 
+0

這就是我所做的,它的工作原理。問題是它是一個GET提交,而不是一個POST一個 – toni

+0

oops ...在你的模板中使用'

.. :) – rjv

+0

ouu yea,謝謝! – toni

2

使用firebug查找下拉菜單的id。它應該是id_days,因爲您使用的名稱爲days。然後將jQuery change事件綁定到它。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<script type="text/javascript" > 
    $(function(){ 
     $('#id_days').change(function(){ 
      $('#id_of_form').submit(); 
     }); 
    }); 
</script> 

<form id="id_form" method="post" action="." name="form_name" > 
    {{ days }} 
</form>