Eredità di modello di Django. Nascondere o rimuovere campi
-
03-07-2019 - |
Domanda
Voglio ereditare una classe di modello da un codice di terze parti. Non userò alcuni dei campi ma voglio che il mio cliente sia in grado di modificare il modello in Admin. È la soluzione migliore per nasconderli dall'amministratore o posso effettivamente impedire che vengano creati in primo luogo?
Inoltre, cosa posso fare se è richiesto uno dei campi indesiderati? Il mio primo pensiero è quello di sovrascrivere il metodo di salvataggio e inserire semplicemente un valore predefinito.
Soluzione
Se stai ereditando il modello, probabilmente non è saggio tentare di nascondere o disabilitare i campi esistenti. La cosa migliore che potresti probabilmente fare è esattamente ciò che hai suggerito: sovrascrivi save ()
e gestisci la tua logica lì dentro.
Altri suggerimenti
Puoi controllare i campi che sono modificabili in admin.
Dai documenti di Django:
" Se desideri un modulo per il modello Autore che includa solo i campi nome e titolo, dovresti specificare i campi o escluderli in questo modo:
class AuthorAdmin(admin.ModelAdmin):
fields = ('name', 'title')
class AuthorAdmin(admin.ModelAdmin):
exclude = ('birth_date',)"
http://docs.djangoproject.com/en/dev/ rif / contrib / admin /
Invece di ereditare, considera l'utilizzo di Moduli personalizzati.
-
È possibile eliminare dalla visualizzazione campi ancora presenti nel modello.
-
Puoi convalidare e fornire valori predefiniti nel metodo
clean ()
del modulo.
Vedi http : //docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-custom-validation-to-the-admin