1.定義數據源,這裏有壹個簡單的定義,比如settings.py
地點= { "浙江":["杭州"],"寧波"],"湖北":["武漢"]}
2.models.py
COUNTRY = [(key,key)用於排序(設置中的鍵。LOCATION.keys())]
類公司(車型。型號):
國家=型號。CharField(max_length=50,null=True,blank=True,verbose_name=_("Country "),choices=COUNTRY)
狀態=模型。CharField(max_length=50,null=True,blank=True,verbose_name=_('State '))
3.管理. py
類CompanyAdminForm(forms。模型表單):
State = MyChoiceField(label = _(' State '),required=False)
定義位置(自身):
導入json
返回json.dumps(設置。位置)
def __init__(self,*args,**kwargs):
ins = kwargs.get('instance ')
超級(CompanyAdminForm,self)。__init__(*args,**kwargs)
state = self.fields['state']
如果ins和ins.country:
state.choices = [(item,item) for item in settings。LOCATION.get(ins.country)]
類別元:
型號=公司
類CompanyAdmin(admin。ModelAdmin):
form = CompanyAdminForm
4.模板/admin/app/company/change _ form . html
復制原來的change_form.html內容,添加到合適的地方(自己寫js代碼)。
& ltscript type = " text/JavaScript " & gt;
var LOCATION = { { adminform . form . locations | safe } };
var $ = django.jQuery
$(文檔)。ready(function(){
$('#id_country ')。change(function(){
var國家=$(本)。val();
$('#id_state ')。empty();
如果(國家){
var state =位置[國家];
var I;
for(I = 0;我& lt狀態.長度;i++){
var v = state[I];
$('#id_state ')。追加(" & lt選項值='" + v + " ' >+v+ " & lt;/option >;");
}
}否則{
$('#id_state ')。追加(" & lt選項值=“”>+"-"+" & lt;/option >;");
}
});
});
& lt/script & gt;