Ho un modello A con ForeignKey in un modello B. Nell'amministratore di Django, come posso aggiungere un collegamento nella pagina di amministrazione del modello A accanto al campo ForeignKey che apre il pagina di amministrazione del modello B?Collegamento in admin django all'oggetto chiave esterna
risposta
È possibile effettuare le seguenti operazioni:
models.py (esempio):
model B(models.Model):
name = models.CharField(max_length=20)
model A(models.Model):
field1 = models.CharField(max_length=20)
Bkey = models.ForeignKey(B)
admin.py
from django.core import urlresolvers
class AAdmin(admin.ModelAdmin):
list_display = ["field1","link_to_B"]
def link_to_B(self, obj):
link=urlresolvers.reverse("admin:yourapp_b_change", args=[obj.B.id]) #model name has to be lowercase
return u'<a href="%s">%s</a>' % (link,obj.B.name)
link_to_B.allow_tags=True
Sostituire yourapp con il nome della vostra applicazione.
Inoltre la risposta accettata, nelle versioni più recenti di Django (1.10, 1.11 e 2.0), il metodo inverso è ora nel pacchetto django.urls (cfr this link).
Inoltre, è necessario utilizzare il metodo mark_safe per l'output HTML nell'amministratore. Quindi il allow_tags diventa inutile.
Infine, per aggiungere un collegamento per l'utente, ho questa funzione nel admin.py:
from django.urls import reverse
from django.utils.safestring import mark_safe
class ObjectAdmin(admin.ModelAdmin):
list_display = ('name', 'link_to_user')
def link_to_user(self, obj):
link = reverse("admin:auth_user_change", args=[obj.user.id])
return mark_safe('<a href="%s">Edit %s</a>' % (link, obj.user.username))
link_to_user.short_description = 'Edit user'
Consiglierei di usare ['format_html'] (https: //docs.djangoproject .com/it/stable/ref/utils/# django.utils.html.format_html) invece di 'mark_safe'. – batisteo
- 1. Filtro admin Django su proprietà Chiave esterna
- 2. Ricerca per chiave esterna id in admin
- 3. Django Admin: ordine per valore sulla chiave esterna correlata
- 4. Consenti null in chiave esterna all'utente. Django
- 5. Django - Esterna chiave predefinita
- 6. Chiave esterna autoreferenziale Django
- 7. Chiave esterna Modello Django
- 8. Django- Get Chiave esterna Modello
- 9. Collegamento al sito admin di django
- 10. Serializzazione di oggetti chiave esterna in Django
- 11. Come cambiare la rappresentazione utente in Django Admin quando usato come chiave esterna?
- 12. In Django Admin come disabilitare il collegamento Elimina
- 13. Django - filtro sulle proprietà di chiave esterna
- 14. Django: imposta la chiave esterna con l'intero?
- 15. Come funziona l'accesso con chiave esterna Django
- 16. Impossibile inserire il valore di chiave esterna in collegamento tavolo
- 17. Django: relazione chiave esterna con la tabella utente non convalida
- 18. Come modellare una chiave esterna in un'app Django riutilizzabile?
- 19. Django filtraggio amministratore queryset da chiave esterna indietro rispetto
- 20. Modello Django Incremento automatico Chiave primaria basata su chiave esterna
- 21. Django REST Framework - POSTing chiave esterna contenente campo chiave naturale?
- 22. Django - accedere alla Gestione di chiave esterna da modelli Django
- 23. WMD in Django Admin?
- 24. Django Admin in Angularjs
- 25. DJANGO: Come list_display un attributo di chiave esterna inversa?
- 26. admin Django DoesNotExist at/admin/
- 27. "Aggiungi Nuovo" per campo chiave esterna in Django ModelForm
- 28. valore di chiave esterna in Django REST quadro
- 29. sqlalchemy chiave esterna generica (come in django ORM)
- 30. Django - Ottieni oggetti chiave esterna in una singola query?
Solo nel caso in cui qualcuno utilizza questa risposta troppo, il vostro modello deve essere in lettere minuscole nella funzione 'reverse' . Quello sarebbe: '" admin: yourapp_yourmodel_change "'. –
@ Raphaël Gomès: grazie per l'input, modificato la risposta. –
quale errore ottieni? –