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.

È stato utile?

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.

  1. È possibile eliminare dalla visualizzazione campi ancora presenti nel modello.

  2. 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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top