Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django form ChoiceField依赖于另一个ChoiceField_Python_Django_Python 2.7_Django 1.6 - Fatal编程技术网

Python Django form ChoiceField依赖于另一个ChoiceField

Python Django form ChoiceField依赖于另一个ChoiceField,python,django,python-2.7,django-1.6,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 =

我有以下表格:

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

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

我最近碰巧遇到了类似的问题(在这方面浪费的时间比我希望的要多)。为了加快进程,我首先在加载页面时在视图中创建了国家/地区列表。然后,借助小Jquery魔术,您可以根据所选的国家字段动态设置region字段

此外,这里是一个简单的实现什么,你正在寻找在这个

此外,还有一个更好的选择,即在每次更改国家/地区字段(为了获取所选国家/地区的地区目录列表,我们将其称为地区/国家/地区)以更新地区选项时进行AJAX调用。在Jquery中查找执行部分作业的以下代码段

var html = $.map(regions_for_country, function(item){
        return '<option value="' + item['key'] + '">' + item['value'] + '</option>'
    }).join('');
var html=$.map(地区、国家、功能(项目){
返回“”+项['value']+''
}).加入(“”);

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

看看这个包中的链接选择,我必须做一个类似的项目,我有3个选择器
大陆->国家->地区
,最后我通过JQuery和AJAX管理它们,每次大陆变化时,国家选择器加载相关的国家和地区选择器empty@Razcou,这个项目的问题是,它似乎都来自于模型。在我的例子中,它是一个没有相关模型的表单。在这种情况下,我发现一个预编译的Lodash模板对于从JSON数据中交换动态HTML非常有用——在没有正式的JS MVC框架(如主干或角度)的情况下: