¿Cómo agregar una lista desplegable de enlaces a nivel provincial y municipal en el fondo del administrador de Django?
1. Defina la fuente de datos, aquí hay una definición simple, como settings.py
Ubicación = { "Zhejiang": ["Hangzhou"], "Ningbo"], " Hubei": ["Wuhan"]}
2.models.py
PAÍS = [(clave, clave) utilizado para ordenar (ingrese la configuración. LOCATION.keys() )]
Categoría Empresa (modelo de coche. Modelo):
País = modelo. CharField(max_length=50, null=True, en blanco=True, verbose_name=_("País"), opciones=PAÍS)
Estado = modelo. CharField(max_length=50, null=True, en blanco=True, verbose_name=_('State '))
3. Management.py
Clase CompanyAdminForm(formularios. Formulario modelo) :
Estado = MyChoiceField(label = _(' Estado '), requerido=False)
Definir ubicación (auto):
Importar json
Devuelve json.dumps(settings.location)
def __init__(self, *args, **kwargs):
ins = kwargs.get('instancia ')
super(CompanyAdminForm, self). __init__(*args, **kwargs)
estado = self.fields['estado']
Si ins e ins.país:
estado.opciones = [(elemento, elemento) para el elemento en la configuración. LOCATION.get(ins.country)]
Elemento de categoría:
Modelo=empresa
Clase CompanyAdmin(admin.ModelAdmin):
form = CompanyAdminForm
4. Template/admin/app/company/change_form.html
Copie el contenido original de change_form.html y agréguelo al lugar apropiado (escriba su propio js). código).
ltscript type = " texto/JavaScript " gt;
var LOCATION = { { adminform ubicaciones } }; .jQuery
$(documentación). listo(función(){
$('#id_country ').cambiar(función(){
var país=$(this).val();
$('#id_state ').
vacío();
si (país){
var estado = ubicación[país];
var I;
para( I = 0; i lt estado.longitud; i ){
var v = estado[I];
$('#id_state '). append("ltoption value='"v"'>v"lt;/option>");
}
}else{
$ (' #id_state '). append("ltoption value="">"-""lt;/option>");
}
});
p>});
lt/script gt;