Django-Find es una aplicación Django que facilita agregar una funcionalidad de búsqueda/filtro compleja para los modelos en su proyecto. Admite dos formas diferentes de buscar en sus modelos Django: basados en consultas o basados en JSON.
Django-Find no es un motor de búsqueda de texto completo, busca los campos de sus modelos. En otras palabras, se filtra en sus modelos y proporciona datos tabulares como resultado.
Por consulta basada, queremos decir que puede usar declaraciones como estas para buscar en sus modelos:
author:"robert frost" and (title:road or chapter:2)
{% load find_tags %}
{% find object_list %}
{% for obj in object_list %}
{{ obj.name }}
{% endfor %}
(Object_List es un Queryset que se pasa a la plantilla)
Simplemente agregue la mezcla de búsqueda:
from django_find import Searchable
class Author ( models . Model , Searchable ):
name = models . CharField ( "Author Name" , max_length = 10 )
...Y estás listo para ir:
# Query-based search returns a standard Django QuerySet that you
# can .filter() and work with as usual.
query = Book . by_query ( 'author:"robert frost" and title:"the road"' )
# You can also get a Django Q object for the statements.
q_obj = Book . q_from_query ( 'author:"robert frost" and title:"the road"' )Para facilitar la realización de búsquedas complejas que abarcan múltiples modelos, se proporciona un método de consulta basado en JSON. Le permite realizar búsquedas personalizadas como estas:
Para esto, se proporciona una funcionalidad de búsqueda basada en JSON:
{
"Author":{"name":[[["equals","test"]]]},
"Book": {"title":[[["notcontains","c"]]]},
"Chapter": {"content":[[["startswith","The "]]]}
}
Django-Find es inteligente al descubrir cómo unir esos modelos y devolver un resultado útil. En su código, puede cargar el JSON y recuperar el resultado de la búsqueda:
# JSON-based search exhausts what Django's ORM can do, so it does
# not return a Django QuerySet, but a row-based PaginatedRawQuerySet:
query , field_list = Book . by_json_raw ( '''{
"Chapter": {"title":[[["contains","foo"]]]}
}''' )
print ( '|' . join ( field_list ))
for row in query :
print ( '|' . join ( row ))La documentación completa, incluidas las instrucciones de instalación, está aquí:
http://django-find.readthedocs.io