Ho un'interfaccia di amministrazione di django e nella lista dei modelli voglio una colonna personalizzata che sarà un collegamento ipertestuale utilizzando uno dei valori dei campi. Fondamentalmente uno dei campi dei modelli è un url e vorrei che la colonna avesse quell'URL in un collegamento ipertestuale cliccabile. Questo collegamento dovrà avere aggiunto un URL aggiuntivo come percorso relativo nel campo del modello.Come si aggiunge una colonna personalizzata con un collegamento ipertestuale nell'interfaccia di amministrazione di django?
risposta
Definire un metodo nella classe ModelAdmin e impostare l'attributo allow_tags
su True
. Ciò consentirà al metodo di restituire codice HTML senza escape per la visualizzazione nella colonna.
Quindi elencarlo come voce nell'attributo ModelAdmin.list_display.
Esempio:
class YourModelAdmin(admin.ModelAdmin):
list_display = ('my_url_field',)
def my_url_field(self, obj):
return '<a href="%s%s">%s</a>' % ('http://url-to-prepend.com/', obj.url_field, obj.url_field)
my_url_field.allow_tags = True
my_url_field.short_description = 'Column description'
vedere la documentazione per ModelAdmin.list_display per maggiori dettagli.
Ho scoperto l'altro giorno che in realtà non è necessario il tag 'a', poiché l'amministratore di Django trasformerà automaticamente l'URL in un collegamento ipertestuale. Non sono al mio PC da lavoro, quindi potrei sbagliarmi. Nel mio caso, non ho avuto bisogno di impostare 'allow_tags'. Ho anche creato una funzione 'get_url()' sul mio modello, al contrario del mio modello di amministrazione, ma è piuttosto banale. Comunque, la tua strada è la migliore se vogliamo aprire il link in una nuova finestra con 'target = _blank' - Spero che questo sia utile. –
Utilizzare l'utilità format_html
. Questo sfuggirà a qualsiasi codice HTML dai parametri e contrassegnerà la stringa come sicura da usare nei modelli. L'attributo del metodo allow_tags
è stato deprecato in Django 1.9.
from django.utils.html import format_html
class MyModelAdmin(admin.ModelAdmin):
list_display = ['show_url', ...]
...
def show_url(self, obj):
return format_html("<a href='http://pre.com{0}'>{0}</a>", obj.url)
Ora gli utenti di amministrazione sono al sicuro anche in caso di:
url == '<script>eval(...);</script>'
Vedi the documentation per maggiori informazioni.
- 1. Creazione di una colonna in SlickGrid con un collegamento ipertestuale
- 2. collegamento ipertestuale/pulsante con chiamata di funzione personalizzata in jqgrid
- 3. Visualizzazione personalizzata Django nella pagina di amministrazione
- 4. personalizzata di Google funzione Spreadsheet Restituzione di un collegamento ipertestuale o una formula esistente
- 5. Come fornire una figura ggplot2 con un collegamento ipertestuale?
- 6. Collegamento ipertestuale all'interno di un blocco testo
- 7. Django Rest Framework, collegamento ipertestuale a una relazione nidificata
- 8. crea i dati della colonna come collegamento ipertestuale (dataTable JQUERY)
- 9. Pulsante di avvio Collegamento ipertestuale
- 10. Creare un collegamento ipertestuale all'interno di una cella di Excel?
- 11. Aggiungere una colonna collegamento ipertestuale per un controllo DataGrid di Winforms
- 12. Rendere QLabel si comporta come un collegamento ipertestuale
- 13. Come posso registrare un collegamento ipertestuale?
- 14. Come creare un collegamento ipertestuale con un'etichetta in Tkinter?
- 15. Collegamento ipertestuale in Android
- 16. Come posso elencare tutti gli oggetti relativi a chiave esterna nel pannello di amministrazione di Django?
- 17. Come creare un collegamento ipertestuale usando XSLT?
- 18. Come creare un collegamento ipertestuale in MessageBox.show?
- 19. come creare una cella di collegamento ipertestuale da tavolo
- 20. Come si aggiunge una colonna calcolata a una tabella?
- 21. Django: simulare un campo nell'interfaccia di amministrazione?
- 22. Come aprire il file p4 con un collegamento ipertestuale
- 23. django ricerca di amministrazione con più parole
- 24. Creare una visualizzazione di testo di collegamento ipertestuale in Android
- 25. Cella di collegamento ipertestuale in Winforms DataGridView
- 26. Come si aggiunge una colonna alla tabella sql server grande
- 27. Come chiudere una pagina Web con un clic del pulsante, un collegamento ipertestuale o un pulsante di collegamento fare clic?
- 28. Implementazione di un collegamento ipertestuale all'interno di un datagrid dojo
- 29. Inserire un collegamento ipertestuale in un MessageBox
- 30. Emissione di un collegamento ipertestuale da un controller in cakePHP
Possibile duplicato di [Come aggiungere collegamenti cliccabili a un campo nell'amministratore di Django?] (Http://stackoverflow.com/questions/1949248/how-to-add-clickable-links-to-a-field-in -django-admin) – Louis