【发布时间】:2014-03-31 08:14:37
【问题描述】:
我有以下 forms.py,其中包含单选按钮和其他字段。根据单选按钮的选择,我应该启用或禁用表单中的其他字段。
Forms.py
class SampleForm(forms.ModelForm):
option = forms.TypedChoiceField(choices=BoolChoices, widget=forms.RadioSelect(renderer=HorizontalRadioRenderer,attrs={'onchange':'check_status()'}), coerce=int,)
otherFields = forms.IntegerField(
widget=forms.TextInput(attrs={'size': 7, 'disabled':True}))
.....
.....
class Meta:
model = Sample
class Media:
js = ('checkoption.js'),
我的问题是我应该使用模板(扩展 admin/base_site.html)还是只在 myapp/templates/myapp/template.html 下添加模板目录
在这种情况下,如果我使用以下 template.html 和 views.py
<form action="{% url myapp.views.check_option %}" method="POST">{% csrf_token %}
{{ form_as_p }}
<input id="submit" type="button" value="Click" />
def check_option(request):
if request.method == 'GET':
form = SsmpleForm()
else:
form = SampleForm(request.POST)
if form.is_valid():
opt = form.cleaned_data['option']
if opt == 1:
form.fields['otherFields'].widget.attrs['enabled'] = True
return render_to_response('verinc/template.html', {'form' : form,},context_instance=RequestContext(request))
现在如何将收音机选择映射到这个视图?有没有其他解决方案可以在 django 中设计此任务。
尝试使用 Ajax
$(document).ready(function(){
function check_status(){
$.get("{% url myapp.views.check_option %}", function(data){
console.log(data);
}
}
})(django.jQuery);
【问题讨论】:
-
how to *map* radio selection to this view?是什么意思 -
我的意思是,当单击单选按钮时调用视图 check_option() 中定义的函数
-
check_option是视图。它会在您提交表单时执行。 -
好的.. 但是我需要运行单选按钮单击选项的功能。这可能吗?
-
然后你想要一个 AJAX 视图,你可以调用单选按钮字段的 onchange。但是,这种观点也应该做出同样的回应。您的视图直接呈现模板。如果您在单击单选按钮时将表单的一部分发送给它,它会返回什么?