2011-01-13 15 views
8

Qual è il modo migliore per visualizzare in modo condizionale un campo nell'amministratore dipendente dai valori degli altri campi?Django Admin: Necessità di visualizzare i campi in modo condizionale

In particolare, sto pensando a add_form e change_form. Ogni volta che viene selezionata una determinata scelta, mi piacerebbe nascondere o disabilitare alcuni campi.

sto pensando che questo potrebbe richiedere una soluzione javascript, ma mi chiedo se c'è un migliore (cioè incorporato) modo per fare questo.

+3

Non esiste una soluzione integrata a questo problema, se vuoi che i campi vengano visualizzati dinamicamente avrai sempre bisogno di una soluzione javascript/ajax personalizzata! –

+0

Grazie, ho pensato che fosse il caso. Sono solo paranoico nel fare le cose nella "Via sbagliata". – IntrepidDude

risposta

1

Bernhard ha ragione. Potresti essere in grado di modificare la visualizzazione e il modello di amministrazione per mostrare/non mostrare i widget per un campo in modo condizionale, ma se vuoi farlo dinamicamente in base ai comportamenti degli utenti nell'amministratore, utilizzerai javascript.

Non è poi così terribile. Almeno i modelli di amministrazione di Django hanno id specifici per modello e istanza per darti un controllo granulare sul comportamento di mostrare/nascondere.

+0

Ho questo stesso bisogno, e mi chiedo dove metterei il codice javascript che lo fa. Cioè in quale modello? –

0

penso che si dovrebbe essere in grado di creare il proprio ModelForm e specificare che l'amministratore utilizza tale (https://docs.djangoproject.com/en/1.7/ref/contrib/admin/#django.contrib.admin.ModelAdmin.form).

Utilizzare il metodo _init __() del modulo per visualizzare i campi in modo selettivo.

Farò un tentativo e aggiornare questa risposta se funziona.

(In realtà rileggere la domanda dipende da "Se i valori di altri campi" sono impostati prima che la pagina sia caricata, questa idea dovrebbe funzionare. Se si desidera una risposta immediata, fare clic su un campo e un altro appare/scompare , sì, avrai bisogno di JavaScript).

0

La mia risposta può sembrare esoterico - ma ho il sospetto che la direzione di disegno si può prendere potrebbero beneficiare di qualche ripensamento. Quando un'interfaccia richiede che TLC molto per ricorrere a AJAX per rendere UX superiore sono incline a non utilizzare l'interfaccia di amministrazione per quello.

Il mio personale punto di vista l'interfaccia di amministrazione di Django è che si tratta di un grande omaggio che mi dà una visione CRUD immediato a livello di base. Mi asterrò dal backup dei piggy per chi ha bisogno di un'interfaccia più user-friendly (anche se alcuni di questi utenti gestiscono le funzioni di amministrazione). Acquisirai un debito tecnico nel tentativo di eseguire questo tipo di UI/UX Ajax e complesse convalide dei moduli utilizzando l'interfaccia di amministrazione.

+0

In realtà Bernhard Vallant ha detto i miei pensieri esatti in un modo molto più succinto. Sopprimerò il suo. –

Problemi correlati