Quiero facetar los resultados en función de los diferentes model_names (clases) devueltos. ¿Hay una forma fácil de hacer esto?facetas Django Haystack en el tipo de modelo
Respuesta
¿Ha intentado agregar un campo SearchIndex
con esta información? P.ej.
class NoteIndex(SearchIndex, indexes.Indexable):
title = CharField(model_attr='title')
facet_model_name = CharField(faceted=True)
def get_model(self):
return Note
def prepare_facet_model_name(self, obj):
return "note"
class MemoIndex(SearchIndex, indexes.Indexable):
title = CharField(model_attr='title')
facet_model_name = CharField(faceted=True)
def get_model(self):
return Memo
def prepare_facet_model_name(self, obj):
return "memo"
Y así sucesivamente, simplemente devolviendo una cadena diferente para cada índice de búsqueda. También puede crear una mezcla y devolver el nombre del modelo devuelto por get_model
también.
Suponiendo que ha agregado este campo a cada una de sus definiciones SearchIndex
, solo chain the facet
method a sus resultados.
results = form.search().facet('facet_model_name')
Ahora el método facet_counts
devolverá un diccionario con los campos facetas y contar los resultados para cada valor de las facetas, en este caso, los nombres de los modelos.
Tenga en cuenta que el campo aquí está etiquetado con detalle para evitar un posible conflicto con model_name
, un campo agregado por Haystack. No tiene facetas, y no estoy seguro de si duplicarlo provocará un conflicto.
¿Puede explicar cómo se usaría esto en un solo formulario de búsqueda para mostrar la facetación en varios modelos? Por ejemplo, si tuviéramos Notas, Memos y Grabaciones, cómo cada uno con su propio Índice, ¿cómo puedo hacer que FacetedSearchForm muestre facetas en estos distintos modelos? –
¿Quiere decir cada uno con su propia definición de SearchIndex? – bennylope
Esperemos que las ediciones de la explicación anterior ayuden. – bennylope
The Docs tienen un muy buen recorrido para esto.
El mínimo que necesita:
- es añadir
faceted=True
a los parametros de su campomodel_names
. - Reconstruya su esquema y sus índices.
- agrega
.facet('model_names')
a cualquier SearchQuerySet que quieras facetar.
Más explicaciones sobre la pregunta permitirían una respuesta más completa.
Si sólo desea filtrar el tipo de modelo, se puede utilizar el ModelSearchForm
- 1. Django haystack y whoosh
- 2. django haystack autocompletar
- 3. Buscando en varias tablas con django-haystack
- 4. Django Haystack exacta filtrado
- 5. Django haystack multivalor no funciona
- 6. Django Haystack autocompletado en dos (múltiples) campos
- 7. Búsqueda de subcadenas Django Haystack
- 8. Django - Haystack de consulta serialización
- 9. ¿Qué es una buena muestra de solrconfig.xml para django-haystack?
- 10. Haystack incompatible con Django 1.4?
- 11. No hay resultados en Django Haystack search
- 12. Django Haystack - Buscar en muchos campos no indexados en muchos
- 13. Serializar un conjunto de consultas django-haystack
- 14. solr + haystack + django ¿dónde coloco schema.xml?
- 15. orden django-haystack - ¿Cómo manejo esto?
- 16. Django Haystack - ¿Cómo mejorar un campo?
- 17. ¿Puedo obtener el tipo de campo de modelo de un queryset modelo en Django?
- 18. django haystack highlight template tag issue
- 19. Django Haystack errores aleatorios usando Whoosh
- 20. taggit y haystack + whoosh
- 21. Columnas ordenando en el modelo de Django
- 22. Django modelo de herencia y verificación de tipo
- 23. ChoiceField en Django modelo
- 24. ¿Filtrar los resultados de Django Haystack como QuerySet?
- 25. valor predeterminado para el campo en el modelo de Django
- 26. Modelo múltipleAdmins/views para el mismo modelo en Django admin
- 27. ¿Cómo poner timedelta en el modelo django?
- 28. Atributo Django "last_login" en el modelo auth_user
- 29. Django filtra el modelo en ManyToMany count?
- 30. importación de modelo de Django
se puede explicar esta pregunta más con un ejemplo por favor? – soField