2011-11-03 30 views
20

Me preguntaba si hay una manera de usar el poder de las capacidades de filtrado/ordenamiento/paginación/búsqueda de Django Admin en una vista normal.Funcionalidad de búsqueda/filtro Django admin como una tabla de la página

Lo que quiero decir es que tengo un modelo, algunos campos en él. Me gustaría tener un formulario de "búsqueda", donde los campos se definirían de manera similar a usar admin.ModelAdmin. El usuario podría buscar (usando los campos proporcionados), filtrar por valores, paginar a través de las páginas de la tabla de resultados, etc. Todo eso sin una cantidad mínima de trabajo de mi parte, por ej. simplemente configuración qué campos deben usarse en el formulario. Algo como esto:

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

¿Hay algo como esto disponible? ¿O tengo que codificarlo yo mismo?

Editar:

Características requiero de un plugin/aplicación de este tipo son:.

  1. datos se muestran como una tabla
  2. Clasificación por columnas
  3. de filtrado (por ejemplo, "mostrar sólo las filas que se tiene X = Y ")
  4. Búsqueda por columnas
  5. Opcionalmente configuración similar al estilo ModelAdmin

Alasdair's django-tables2 solo coincide con la 1ª y la 2ª condición.

+0

¿Cuál es el estado actual en 1.7? – eyaler

Respuesta

18

La funcionalidad django que menciona no es realmente reutilizable en vistas personalizadas a partir de Django 1.3. Hubo recientemente una discusión sobre el grupo django-developers sobre splitting out admin functionality para hacerlo reutilizable.

He encontrado dos proyectos que pueden serle útiles, django-tables2 y django-filter. Ambos ofrecen cosas ligeramente diferentes, creo que estás buscando una mezcla de los dos.

django-tables2

django-tables2 simplifica la tarea de convertir conjuntos de datos en tablas HTML. Tiene soporte nativo para paginación y clasificación. Lo hace para las tablas HTML django.forms lo hace por formularios HTML

django-filtro

Django-filtro es una aplicación Django reutilizable para permitir a los usuarios filtrar queryset dinámicamente. Requiere Python 2.4 o superior. Para instrucciones de uso y de instalación, consulte el directorio de documentos.

Django-filter se puede utilizar para generar interfaces similares a la interfaz del administrador list_filter de Django. Tiene una API muy similar a Django's ModelForms.

+0

Sí, no quiero volver a utilizar ModelAdmin, quiero algo para vistas públicas, que tenga las capacidades de ModelAdmin. –

+0

django-filter es lo que estaba buscando! En este momento lo estoy usando con django-pagination, pero verificará si funciona también con django-tables2. –