1
jianghu52 2013-09-21 12:59:16 +08:00
django的米有做过,做过一个php的。当时是日文版本,有两个实现方式,一种是用别人提供的js,直接调用js的方法,另外一种是通过一个网站的api,直接连接这个网站的地址外带选择的县的参数,然后这个网站会直接返回给你一个xml文件,你读取这个xml文件就会得到相应县下的市区的名字。
我估计国内有相同的js,但是有没有类似api网站的那种,就不知道了。 |
2
jianghu52 2013-09-21 12:59:48 +08:00 1
|
5
jjx 2013-09-22 12:06:47 +08:00
@click
得确是可以,不过过程有点多, 以下代码仅供参考,请自行调整 1. 定义数据来源, 这里简单的定义一下,如 settings.py LOCATION = {"浙江": ["杭州", "宁波"], "湖北": ["武汉"]} 2. models.py COUNTRY = [(key, key) for key in sorted(settings.LOCATION.keys())] class Company(models.Model): country = models.CharField(max_length=50, null=True, blank=True, verbose_name=_("Country"), choices=COUNTRY) state = models.CharField(max_length=50, null=True, blank=True, verbose_name=_('State')) 3. admin.py class CompanyAdminForm(forms.ModelForm): state = MyChoiceField(label=_('State'), required=False) def locations(self): import json return json.dumps(settings.LOCATION) def __init__(self, *args, **kwargs): ins = kwargs.get('instance') super(CompanyAdminForm, self).__init__(*args, **kwargs) state = self.fields['state'] if ins and ins.country: state.choices = [(item, item) for item in settings.LOCATION.get(ins.country)] class Meta: model = Company class CompanyAdmin(admin.ModelAdmin): form = CompanyAdminForm 4. templates/admin/app/company/change_form.html 复制原change_form.html内容 在合适位置加入(自行写js代码 ) <script type="text/javascript"> var LOCATION = {{ adminform.form.locations | safe }}; var $ = django.jQuery; $(document).ready(function(){ $('#id_country').change(function(){ var country =$(this).val(); $('#id_state').empty(); if (country ){ var state = LOCATION[country]; var i; for (i=0; i < state.length; i++){ var v = state[i]; $('#id_state').append("<option value='" + v + "'>" + v + "</option>"); } } else { $('#id_state').append("<option value=''>" + "---------" + "</option>"); } }); }); </script> |
6
jjx 2013-09-22 12:39:32 +08:00 1
|
8
click OP 还是没搞定……
|