我有以下表格:
class MyForm(forms.Form):
country = forms.ChoiceField(
widget = forms.Select()
)
region = forms.CharField(
widget = forms.Select()
)
def update_region(self):
self['region'].field.widget.choices = get_choices_for_region(
self['region'].field.initial)区域选择取决于国家选择。我有一个ajax例程,可以用选定的国家更新区域。我为该区域使用了一个CharField,因此它将正确地进行验证。
实际上,我在视图中预先填充了数据:
myform['country'].field.initial = 'Switzerland'
myform.update_region()
return ...问题:有没有办法迫使地区选择随着国家的更新而自动更新?
发布于 2015-07-04 19:27:43
最近,我碰巧遇到了类似的问题(在这件事上浪费的时间比我想象的要多得多)。为了加快处理速度,我首先在页面加载时在视图中创建了国家区域列表。然后,借助小小的Jquery魔术,您可以根据所选择的国家字段动态地设置区域字段。
这里也是您在这个链接中所寻找的内容的一个简单实现。
此外,还有一个更好的方法,在每次国家字段(获取所选国家的区域数据列表,我们称其为regions_for_country)时进行AJAX调用,以更新区域选项。在Jquery中找到完成部分工作的以下代码段。
var html = $.map(regions_for_country, function(item){
return '<option value="' + item['key'] + '">' + item['value'] + '</option>'
}).join('');这将为选项生成html代码,您可以使用.html()命令轻松替换这些选项。我更喜欢最后一种方法,因为在前面的方法中,我们正在浪费时间来生成国家区域的关键值对,这对大数据集是有害的。
https://stackoverflow.com/questions/23808779
复制相似问题