2013-04-18 72 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>