2011-11-03 17 views
20

Mi chiedevo se esiste un modo per utilizzare la potenza delle funzionalità di filtro/ordinamento/impaginazione/ricerca di Django Admin in una vista normale.Funzionalità di ricerca/filtraggio di Django come tabella di pagina

Quello che voglio dire è che ho un modello, alcuni campi su di esso. Mi piacerebbe avere un modulo di "ricerca", in cui i campi sarebbero definiti in modo molto simile a admin.ModelAdmin. L'utente sarebbe in grado di cercare (usando i campi forniti), filtrare per valori, impaginare attraverso le pagine della tabella dei risultati ecc. Tutto ciò senza una minima quantità di lavoro da parte mia, ad es. basta configurare quali campi dovrebbero essere usati nel modulo. Qualcosa del genere:

class SchoolAdmin(ModelAdmin): 
    list_display = ('id', 'name',) 
    list_display_links = ('name',) 
    search_fields = ('name',) 
    list_filter = ('type',) 

Esiste qualcosa del genere? O devo codificarlo da solo?

Edit:

Caratteristiche che desidero da un tale plugin/applicazione sono:.

  1. visualizzare i dati come una tabella
  2. Ricerca per colonne
  3. Filtering (ad esempio "mostra solo le righe che ha X = Y ")
  4. Ricerca per colonne
  5. Facoltativamente configurazione simile allo stile ModelAdmin

di django-tables2 Alasdair corrisponde solo 1 ° e 2 ° condizioni.

+0

Qual è lo stato corrente in 1.7? – eyaler

risposta

18

La funzionalità di django che hai citato non è davvero riutilizzabile nelle viste personalizzate come da Django 1.3. Di recente sono state discusse sul gruppo django-developers circa splitting out admin functionality per renderlo riutilizzabile.

Mi sono imbattuto in due progetti che potrebbero essere utili a voi, django-tables2 e django-filter. Entrambi offrono cose leggermente diverse, penso che tu stia cercando una miscela dei due.

django-tables2

django-tables2 semplifica il compito di trasformare insiemi di dati in tabelle HTML. Ha un supporto nativo per l'impaginazione e l'ordinamento. Lo fa per le tabelle HTML cosa django.forms fa per moduli HTML

django-filtro

Django-filtro è un'applicazione riutilizzabile Django per consentire agli utenti di filtrare set di query in modo dinamico. Richiede Python 2.4 o versioni successive. Per l'utilizzo e le istruzioni di installazione di consultare la directory dei documenti.

Il filtro Django può essere utilizzato per la generazione di interfacce simili all'interfaccia di amministrazione di dell'amministratore di Django . Ha un'API molto simile a quella di Django ModelForms.

+0

Sì, non voglio riutilizzare ModelAdmin, voglio qualcosa per le viste pubbliche, che ha le capacità di ModelAdmin. –

+0

Il filtro Django è quello che stavo cercando! In questo momento lo sto usando con django-pagination, ma controlleremo se funziona anche con django-tables2. –

Problemi correlati