Django表单ChoiceField依赖于另一个ChoiceField

时间:2014-05-22 13:49:17

标签: python django python-2.7 django-1.6

我有以下表格:

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

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

1 个答案:

答案 0 :(得分:0)

我最近碰巧遇到了类似的问题(浪费了很多时间,而不是浪费时间)。为了使过程快速,我首先在页面加载时在视图中创建了国家/地区列表。然后,在小Jquery Magic的帮助下,您可以根据所选的国家/地区字段动态设置区域字段。

此处还有一个简单的实现,您正在寻找link

每当国家/地区的字段(获取所选国家/地区的区域列表,我们称之为regions_for_country)更改为更新区域选项时,还有一个更好的替代方法是进行AJAX调用。在Jquery中找到执行部分工作的以下代码段。

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

这将生成可以使用.html()命令轻松替换的选项的html代码。我更喜欢上一种方法中的最后一种方法,我们浪费时间生成country-region的键值对,这对大数据集可能是有害的。