Alcune delle mie visualizzazioni in Django Admin impiegano troppo tempo per essere caricate. Qual è il modo migliore per eseguire il debug di una vista di Django Admin per vedere che cosa è un ciclo di masticazione?Debugging slow Django Admin views
risposta
Come ha commentato rantanplan, django debug toolbar è il modo più semplice per iniziare la profilatura (mostra tutte le query eseguite al caricamento della pagina, la loro EXPLAIN, il tempo impiegato per l'esecuzione, ecc.). Si potrebbe anche dare un'occhiata a una domanda per quanto riguarda il profilo di un'installazione django lento qui: How to profile django application with respect to execution time?
Tale questione menziona l'uso di hotshot, che è fatto riferimento anche sul Wiki di Django sotto profiling django.
Anche io ho visto questo con particolari modelli nell'Admin Django se i loro tavoli sono molto, molto grandi (diversi milioni di record faranno il trucco) e il motore di tabella è InnoDB di MySQL. Mi ci è voluto un po 'per capire come risolvere i problemi per ottenere il mio admin Django canticchiare di nuovo per le tabelle con record di 100M +. Il problema alla radice si è rivelato essere costose query COUNT(*)
al caricamento della pagina e anche query di ricerca mal costruite ogni volta che ho utilizzato uno dei miei search_fields
da ModelAdmin.
ho documentato tutte le mie soluzioni qui, in modo che un giorno potrebbe aiutare un compagno di Django-er in difficoltà: http://craiglabenz.me/2013/06/12/how-i-made-django-admin-scale/
Um, si dovrebbe riassumere/dare la soluzione qui nel caso in cui il collegamento si interrompe (di nuovo). – SamB
Questa risposta ha funzionato, bug ricorda che se stai personalizzando 'ModelAdmin', dovresti riscrivere il tuo' get_queryset' perché 'django.admin' usa' _default_manager'. Maggiori informazioni controlla [questo] (http://stackoverflow.com/questions/1545067/django-specify-which-model-manager-django-admin-should-use). – shellbye
Se si utilizza Django con MySQL poi c'è un bug in MySQL con inner join ottimizzazione. Se si tenta di utilizzare le chiavi esterne in Admin.list_display
, Django genererà query con ordinamento e INNER JOIN che sono estremamente lenti in MySQL.
Ci sono due soluzioni a questo:
Usa django-mysql-fix backend: https://pypi.python.org/pypi/django-mysql-fix
Override
get_query_set
in AdminChangeList - rimuovereselect_related
e impostareprefetch_related
campi - i dettagli sono nella mia altra risposta qui: https://stackoverflow.com/a/23097385/1178806
Ecco alcuni buoni un nswers riguardanti lenti modificare forme causate da tabelle ForeignKey con molti record Django admin change form load quite slow
quanto riguarda Lista Visualizzazioni: 1) È possibile aggiungere l'opzione list_per_page e mostrare meno risultati:
class EventAdmin(admin.ModelAdmin):
list_per_page = 20
2) o utilizzare select_related():
2,1) Per django < 1.6:
class EventAdmin(admin.ModelAdmin):
def queryset(self, request):
qs = super(EventAdmin, self).queryset(request)
return qs.select_related('foreign_key_field1, foreign_key_field2, etc')
2.2) per Django> = 1,6:
class EventAdmin(admin.ModelAdmin):
def get_queryset(self, request):
qs = super(EventAdmin, self).queryset(request)
return qs.select_related('foreign_key_field1, foreign_key_field2, etc')
Naturalmente, sostituire foreign_key_field1, e foreign_key_field2, ecc con i nomi dei campi appropriati.
- 1. Django admin MySQL slow INNER JOIN
- 2. MySQL - Views - Super slow query
- 3. admin Django DoesNotExist at/admin/
- 4. Sinatra Web Admin (come Django Admin)
- 5. WMD in Django Admin?
- 6. Django Admin CSS mancante
- 7. Django Admin linea: select_related
- 8. Django Admin in Angularjs
- 9. Django Admin Fieldsets
- 10. admin condizionale Django list_editable
- 11. Django admin - ordinamento list_filter
- 12. django: using admin datepicker
- 13. Django fix Admin plurale
- 14. Django admin list filter
- 15. Django Admin - Re-authentication?
- 16. admin Django list_display newline
- 17. Django Admin Ottimizzazione ricerca
- 18. Django - Admin: list_display TextField
- 19. Pagina di Django Admin non trovata in/admin/
- 20. Django Class Based Views URL Variable Passing
- 21. Django admin, nasconde un modello
- 22. Azioni personalizzate in Django Admin
- 23. linea indiretta in Django Admin
- 24. Ordine di ordinamento Django admin
- 25. Nascondi campi in Django Admin
- 26. Django admin: override di metodo
- 27. Django Admin non ha stile
- 28. Django admin, sezione senza "modello"?
- 29. Django - User, UserProfile e Admin
- 30. Django admin GenericForeignKey in linea
https://github.com/django-debug-toolbar/django-debug-toolbar#readme – rantanplan
si può provare aggiungere 'list_select_related = true' proprietà data classe di amministrazione – yedpodtrzitko