2012-02-17 14 views
5

Ho creato un modello django in cui i campi richiesti cambiano in base alla selezione dell'utente su altri campi precedenti. In particolare, è un'applicazione di pianificazione degli eventi in cui le opzioni cambiano in base alle scelte effettuate dall'utente.Django Admin disabilita il campo in modo dinamico in base ad altre selezioni

Alcune combinazioni di campi sono semplicemente non valide, e ho il modello impostato per controllare quelle e non permetterle. Tuttavia, è un po 'di confusione nell'interfaccia utente trovare le giuste combinazioni. Mi piacerebbe che l'interfaccia utente dell'amministratore ti aiutasse nascondendo o disabilitando i campi non validi mentre l'utente modifica altri campi.

Ad esempio, se l'utente sceglie di ripetere l'evento settimanalmente, devo disabilitare (o idealmente rimuovere) tutti i campi giornalieri e mensili e mostrare solo quelli settimanali, come il giorno della settimana.

Inoltre, se tornano indietro e lo modificano giornalmente, i campi visualizzati o abilitati devono essere modificati per riflettere tale selezione.

Come configurare il modulo di amministrazione in modo che ciò avvenga? So che questo è fattibile tramite DOM e javascript, ma sto cercando di determinare se esiste un meccanismo per questo integrato in Django. Ho cercato i documenti di Django, ma non riesco a trovarlo.

Qualcuno ha un esempio che mostra come hai fatto cose simili?

+0

Non esiste un "meccanismo" per questo in Django. JavaScript è la tua unica opzione. Cosa c'è di sbagliato nell'usare JavaScript? –

risposta

3

Non c'è una soluzione integrata.

La soluzione semplice consiste nell'aggiungere codice JavaScript personalizzato all'amministratore. Vedi lo reference here. Basta aggiungere i file js e css alla classe Admin e scrivere il modulo nel tuo js personalizzato.

class ReportAdmin(admin.ModelAdmin): 

    class Media: 
     js = (
      'frontend/js/jquery-1.6.1.min.js', 
      'frontend/js/jquery-ui.min.js', 
      'frontend/js/custom_js.js', 
     ) 
+3

È inoltre necessario aggiornare il metodo di pulizia del modello, altrimenti l'utente può inviare dati non validi se modificano o disattivano javascript. – jterrace

Problemi correlati