Quando si visualizza la lista di modifica amministratore per un modello, è possibile rendere le colonne che corrispondono ai collegamenti di chiavi esterne alle rispettive pagine? Un semplice esempio è che ho un oggetto Foo che contiene Bar come chiave esterna. Se visualizzo la lista di modifica dell'amministratore per Foo (e l'ho impostato per includere la barra nelle colonne display_list), la colonna principale si collegherebbe alla pagina di modifica dell'istanza di Foo mentre la colonna della barra si collegherebbe alla pagina di modifica dell'istanza di Boo. Capisco che posso ignorare il modello che è stato utilizzato, ma ero curioso di sapere se c'era una soluzione che non lo richiedeva.Cambia elenco link a cambio chiave esterna pagina
risposta
È possibile definire un metodo personalizzato da utilizzare nell'elenchanger che restituisce l'HTML del collegamento.
from django.core.urlresolvers import reverse
class MyFooAdmin(admin.ModelAdmin):
list_display = ('foo', 'bar_link')
def bar_link(self, obj):
url = reverse('admin:myapp_bar_change', args=(obj.pk,))
return '<a href="%s">Edit Bar</a>' % url
bar_link.allow_tags = True
Un problema con la tua domanda come detto - se Foo ha una chiave esterna per bar, poi ogni link foo per una singola barra, in modo da poter creare un collegamento alla pagina di modifica per quel bar. Tuttavia, ogni barra si collega a più foos, quindi non ha senso chiedere un link alla 'pagina di modifica dell'istanza di Foo'. Che cosa si può fare è link alla pagina modifiche per Foo con il filtro impostato per visualizzare solo le istanze che puntano alla Bar:
def foo_link(self, obj):
url = reverse('admin:myapp_foo_changelist')
return '<a href="%s?bar=%s">See Foos</a>' % (url, obj.pk)
foo_link.allow_tags = True
ho trovato e piaciuto risposta di Daniel, anche se la variante changelist spazza via tutte le modifiche l'ho già fatto Quindi questo è un modo per risolvere questo:
prima cosa è necessario per ottenere un riferimento alla richiesta, si può fare che avvolgendo changelist_view
o queryset
come ho fatto io:
class CountryAdmin(ModelAdmin):
model = Country
list_display = ('pk', 'continent_changelist')
# ...
def queryset(self, request):
self._get_params = request.GET
return super(CountryAdmin, self).queryset(request)
def continent_changelist(self, obj):
url = reverse('admin:yourapp_country_changelist')
querystring = self._get_params.copy()
querystring['continent__id__exact'] = obj.continent.pk
return u'<a href="{0}?{1}">{2}</a>'.format(
url, querystring.urlencode(), obj.continent)
continent_changelist.allow_tags = True
Che vi darà un filtro all'interno delle righe dell'elenco dei cambiamenti. Ho risposto a questa domanda in un'altra domanda, ma questo era il posto in cui sono arrivato per primo, quindi volevo registrarlo qui. :-)
- 1. MySQL cambia tipo di chiave esterna
- 2. Chiave primaria composta, chiave esterna. Riferimento a oggetto o chiave?
- 3. Chiave esterna per chiave composta
- 4. Chiave esterna non riesce a creare
- 5. Chiave esterna a una delle tante tabelle?
- 6. Chiave esterna a più colonne in MySQL?
- 7. Jquery getJSON a PHP pagina esterna
- 8. differenze tra "chiave esterna" e "chiave esterna vincolo"
- 9. Chiave esterna PostgreSQL condizionale
- 10. Chiave esterna Modello Django
- 11. vincolo di chiave esterna SailsJS
- 12. Django - Esterna chiave predefinita
- 13. Unione tabelle, chiave esterna
- 14. Chiave esterna SQLite
- 15. Chiave esterna Sequelize.js
- 16. JPA: annotazione chiave esterna
- 17. Domanda chiave esterna MySQL
- 18. Chiave esterna autoreferenziale Django
- 19. chiave composita come chiave esterna (SQL)
- 20. jQuery valore di cambio di selezionare Elenco
- 21. Pagina iniziale caricamento pagina esterna Cordova/PhoneGap
- 22. GROUP BY chiave esterna o chiave primaria?
- 23. chiave esterna cakephp non la chiave primaria
- 24. Collegamento in admin django all'oggetto chiave esterna
- 25. Devo impostare manualmente le proprietà della chiave esterna quando cambio le associazioni?
- 26. Azione link alla stessa pagina
- 27. Cambio URL senza caricamento pagina in IE
- 28. Doppia chiave esterna in postgresql
- 29. Chiave esterna sull'alternativa tabella myisam?
- 30. condizionale chiave esterna in SQL
Farò una prova. Quello che intendevo collegando alla pagina di modifica di Foo è solo per mantenere il collegamento predefinito alla pagina di modifica di Foo dalla lista di modifica di Foo (ammetto che non ero molto chiaro con esso). – Adam
Qualsiasi aggiornamento su questo in 1.4 o 1.5 (voglio dire questo sembra una grande aggiunta a Django stesso quindi forse è già aggiunto a 'contrib.admin')? –