首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django表单ChoiceField依赖于另一个ChoiceField

Django表单ChoiceField依赖于另一个ChoiceField
EN

Stack Overflow用户
提问于 2014-05-22 13:49:17
回答 1查看 3.6K关注 0票数 6

我有以下表格:

代码语言:javascript
复制
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,因此它将正确地进行验证。

实际上,我在视图中预先填充了数据:

代码语言:javascript
复制
myform['country'].field.initial = 'Switzerland'
myform.update_region()
return ...

问题:有没有办法迫使地区选择随着国家的更新而自动更新?

EN

回答 1

Stack Overflow用户

发布于 2015-07-04 19:27:43

最近,我碰巧遇到了类似的问题(在这件事上浪费的时间比我想象的要多得多)。为了加快处理速度,我首先在页面加载时在视图中创建了国家区域列表。然后,借助小小的Jquery魔术,您可以根据所选择的国家字段动态地设置区域字段。

这里也是您在这个链接中所寻找的内容的一个简单实现。

此外,还有一个更好的方法,在每次国家字段(获取所选国家的区域数据列表,我们称其为regions_for_country)时进行AJAX调用,以更新区域选项。在Jquery中找到完成部分工作的以下代码段。

代码语言:javascript
复制
var html = $.map(regions_for_country, function(item){
        return '<option value="' + item['key'] + '">' + item['value'] + '</option>'
    }).join('');

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23808779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档