Red de conocimiento informático - Material del sitio web - ¿Cómo agregar una lista desplegable de enlaces a nivel provincial y municipal en el fondo del administrador de Django?

¿Cómo agregar una lista desplegable de enlaces a nivel provincial y municipal en el fondo del administrador de Django?

Sí, pero el proceso es un poco complicado. El siguiente código es solo de referencia, ajústelo usted mismo.

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;