template - Funcionalidad de búsqueda/filtro de administrador de Django como tabla de páginas
django tutorial (2)
La funcionalidad de django que menciona no es realmente reutilizable en vistas personalizadas a partir de Django 1.3. Recientemente hubo una discusión en el grupo de desarrolladores de django sobre la división de la funcionalidad de administración para hacerlo reutilizable.
Me he encontrado con dos proyectos que podrían ser útiles para usted, 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. Hace para tablas HTML lo que hace django.forms para formularios HTML
filtro django
Django-filter es una aplicación reutilizable de Django para permitir a los usuarios filtrar el conjunto de consultas dinámicamente. Requiere Python 2.4 o superior. Para instrucciones de uso e instalación consulte el directorio de documentos.
Django-filter puede usarse para generar interfaces similares a la interfaz
list_filter
del administrador delist_filter
. Tiene una API muy similar aModelForms
de Django.
Me preguntaba si hay una manera de utilizar el poder de las capacidades de filtrado / pedido / paginación / búsqueda de Django Admin en una vista regular.
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 muy similar a como 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 la cantidad mínima de trabajo de mi parte, por ejemplo. Sólo la configuración de los campos que se deben utilizar 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:
Las características que requiero de dicho complemento / aplicación son:
- Mostrar datos como una tabla
- Clasificación por columnas
- Filtrado (por ejemplo, "mostrar solo filas que tienen X = Y")
- Buscando por columnas
- Opcionalmente configuración similar al estilo ModelAdmin.
Las django-tables2 solo coinciden con las condiciones 1 y 2.
Para ampliar la respuesta de Alasdair, agregué un módulo simple que agrega un filtrado simple a django-tables2. Consulte https://github.com/benjiec/django-tables2-simplefilter .