5

我有以下表格:

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 ...

问题:有没有办法通过更新国家来强制地区选择自动更新?

4

1 回答 1

0

我最近碰巧遇到了类似的问题(并且在这方面浪费了比希望多得多的时间)。为了加快这个过程,我首先在页面加载时在视图中创建了 Country-Region Lists。然后,借助小 Jquery Magic,您可以根据所选国家/地区字段动态设置区域字段。

此外,这里是您在此链接中查找的内容的简单实现。

此外,每次更改国家/地区的字段(以获取所选国家/地区的地区字典列表,我们称其为 region_for_country)以更新地区选项时,还有一个更好的选择来进行 AJAX 调用。在 Jquery 中找到以下代码片段,它完成了部分工作。

var html = $.map(regions_for_country, function(item){
        return '<option value="' + item['key'] + '">' + item['value'] + '</option>'
    }).join('');

这将为您可以使用.html()命令轻松替换的选项生成 html 代码。我更喜欢最后一种方法,因为在前一种方法中,我们浪费时间生成国家/地区的键值对,这可能对大数据集有害。

于 2015-07-04T19:27:43.123 回答