2012-11-03 5 views
10

Voglio implementare una sezione di report in Django admin. Ciò significherebbe aggiungere una sezione personalizzata nella home page dell'amministratore in cui anziché un elenco di modelli vedrei un elenco di rapporti. Voglio utilizzare le tabelle di amministrazione di Django con filtri, ordinamento, tutto se possibile.Come aggiungere una sezione di report all'amministratore di Django?

Quale sarebbe il modo "migliore" per raggiungere questo obiettivo? Mi rendo conto che questa è una "grande" domanda quindi non sto chiedendo necessariamente frammenti di codice, un riassunto delle azioni necessarie andrebbe bene :)

P.S. Per segnalazione intendo un modello "confezionato" per query personalizzate (queryset o come si chiama).

P.S.2 Forse questa domanda dovrebbe essere qualcosa di simile: Come utilizzare le funzionalità di tabelle di amministrazione di Django nella propria vista di amministrazione?

P.S.3 O forse esiste un modo per fornire all'interfaccia di amministrazione esistente i miei dati. In questo modo non devo fare nient'altro. Voglio solo dire che invece di un modello prendere questi dati e visualizzarli in un bel tavolo che posso ordinare, filtrare ecc. Ecc.

+0

cosa intendi per "elenco di rapporti"? Hai in mente qualche tipo specifico di rapporto? –

+0

Cosa intendi con ** rapporti **? Puoi preparare una pagina personalizzata con Django e creare qualsiasi tipo di cosa desideri.Tuttavia, non è possibile utilizzare i filtri django predefiniti in una tale visualizzazione e modello. Ma puoi facilmente scrivere i nostri filtri. Come [saltare la pagina indice dell'amministratore e andare a uno specifico] (http://stackoverflow.com/a/12424461/257972) – FallenAngel

+0

Voglio dire che ora hai nella home page dell'amministratore di Django il nome dell'app come intestazione della sezione (con sfondo blu) e quindi l'elenco dei modelli di quella app. Voglio una sezione con l'intestazione Reports e quindi un elenco di report come Vendite, Best Sellers ... praticamente qualsiasi tabella che non ha un modello dietro ma è composta da un codice. Invece di un modello reale avrei dietro un modello "truccato". –

risposta

9

Quindi stai tentando di aggiungere nuove pagine nell'amministratore di django.

Questa sezione ti spiega esattamente come si può fare in modo - https://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-views-to-admin-sites

L'idea di base è quella di aggiungere nuovi URL che si desidera nella vostra urls.py come se si sta aggiungendo gli URL per le pagine "front end". La differenza principale è che questi nuovi URL che si stanno aggiungendo dovrebbero iniziare con ^admin/ e apparirebbero come ^admin/my_special_link_in_admin e questo URL indicherà la propria funzione di visualizzazione personalizzata in una posizione che si preferisce.

E.g.

(r'^admin/my_special_link_in_admin/$', 'my_custom_admin_app.views.special_admin_page'), 

Quindi questo è il modo per completare la personalizzazione. C'è un ottimo tutorial che mi riferisco a qui - http://brandonkonkle.com/blog/2010/oct/4/django-admin-customization-examples/

Inoltre, se non si vuole fare troppo lavoro, considerare l'utilizzo di Django Admin Plus - https://github.com/jsocol/django-adminplus

o un django-admin-views - https://github.com/frankwiles/django-admin-views

+0

Sì, desidero nuove pagine ma non lo faccio voglio usare i miei modelli di tabelle e funzionalità. Questo è un lavoro enorme! :) Voglio che il buon admin di Django funzioni anche per i dati personalizzati, non solo per i dati del modello: D –

+0

Yup. Capisco. Utilizzare https://github.com/jsocol/django-adminplus come indicato nella mia risposta aggiornata. –

+0

Questo adminplus prenderà tra le mie mani la necessità di scrivere l'ordinamento dei tavoli, ad esempio? –

0

Inoltre, c'è questa bella app:

django-admin-reports

"admin_reports" è un Djan vai all'applicazione per creare facilmente report di aggregazione dei dati da visualizzare all'interno dell'amministratore di Django.

L'amministratore di Django è molto incentrato sui modelli e fornisce un modo rapido e semplice per creare una GUI per l'interfaccia CRUD, ma spesso c'è la necessità di visualizzare i dati in un modulo aggregato, ecco dove gli admin_reports sono utili.

L'idea è di avere una classe simile a ModelAdmin (da django.contrib.admin) che consente di visualizzare i dati derivati ​​concentrandosi sull'implementazione della procedura di aggregazione.

Problemi correlati