Domanda

    

Questa domanda ha già una risposta qui:

         

Esiste un modo per rimuovere " Aggiungi " funzionalità sul sito di amministrazione di Django? Per alcune entità, desidero solo che l'amministratore di Django sia in grado di visualizzarle o modificare quelle esistenti, ma non aggiungerne di nuove.

È stato utile?

Soluzione

Certo, puoi personalizzare l'amministratore MOLTO in modo granulare seguendo le istruzioni qui - Credo che ciò che desideri possa essere ottenuto in parte sovrascrivendo ModelAdmin.save_model (self, request, obj, form, change) nel tuo ModelAdmin sottoclasse, per garantire che non accada nulla sullo store quando change è falso (ovvero un tentativo di aggiungere anziché modificare), e in parte sostituendo ModelAdmin.add_view (self, request, form_url = ' ', extra_context = None) per visualizzare un " aggiungi vista " ciò rende molto chiaro all'amministratore che NON gli sarà permesso di aggiungere oggetti attraverso questo percorso. In realtà non ho fatto la specifica personalizzazione dell'amministratore richiesta, ma ne ho fatti altri e sembrano funzionare abbastanza bene!

Altri suggerimenti

Puoi personalizzare l'autorizzazione per ciascun gruppo di utenti dall'interfaccia di amministrazione: prova ad andare su / admin / auth / group e dovrebbe essere semplice da lì.

Questo non sarà così granulare come la soluzione offerta dalla risposta precedente, ma si prenderà cura della maggior parte delle tue esigenze senza dover personalizzare l'amministratore.

Se modifichi le autorizzazioni per limitare l'accesso, otterrai comunque il segno più da un campo FK / MtM. Facendo clic su questo si aprirà una finestra popup con "Autorizzazione negata" al suo interno.

Puoi effettivamente rimuovere completamente il segno più semplicemente non registrando il modello con l'amministratore.

Ho una situazione in cui ho categorie predefinite che voglio che gli utenti possano selezionare più di una. Il modo migliore per farlo è con un campo models.ManyToMany. Puoi registrare il modello con l'amministratore, inserire i dati come richiesto e quindi rimuovere la registrazione.

Un modo semplice ed efficace è impostare max_num = 0 per quel particolare in linea.

Il suggerimento di Satya di impostare max_num = 0 funziona perfettamente.

Per i documenti Django sulla classe ModelForm:

  

Per gli utenti con browser abilitati per JavaScript, un " Aggiungi un altro " viene fornito un collegamento per consentire l'aggiunta di un numero qualsiasi di linee aggiuntive in aggiunta a quelle fornite come risultato dell'argomento aggiuntivo.

     

Il collegamento dinamico non verrà visualizzato se il numero di moduli attualmente visualizzati supera max_num o se l'utente non ha JavaScript abilitato.

e

  

Come con i normali form, è possibile utilizzare max_num ed i parametri extra per modelformset_factory per limitare il numero di moduli extra visualizzati.

     

max_num non impedisce la visualizzazione di oggetti esistenti

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