Totalmente novato aquí ...
https://docs.djangoproject.com/en/2.1/ref/contrib/postgres/search/#postgresql -fts-search-configuration
Hola @gotexis. django-filter básicamente hace dos cosas:
Cuando no hay una clase Filter
que construya la consulta que está buscando, tiene dos opciones:
Filter.method
.Si puede generalizar la consulta, escribir un Filter
sería más reutilizable; sin embargo, Filter.method
es útil para instancias únicas. Escribirías algo como:
from django.contrib.postgres.search import SearchQuery, SearchVector
from djanog_filters import FilterSet, CharFilter
class F(FilterSet):
# The model `field_name` is the field you want to search on and is passed to your `method`.
# The `method` argument is the name of the method to call to perform filtering.
search = CharFilter(field_name='body_text', method='search_fulltext')
def search_fulltext(self, queryset, field_name, value):
return queryset \
.annotate(search=SearchVector(field_name)) \
.filter(search=SearchQuery(value))
Wow, gracias por tu ayuda @rpkilby , por favor dame algunos días más para digerir este código ...
En este momento me estoy golpeando la cabeza con graphene-django que se integra con django-filtros.
Espero (idealmente) implementar esto con GraphQL
Tenga en cuenta que puede haber algunos problemas con la forma en que graphene-django envuelve django-filter. p. ej., vea el n. ° 927
@rpkilby Sí señor
Parece que, de hecho, hay un montón de problemas con Graphene dado lo impopular que se ha vuelto Python + GraphQL en comparación con Node, además de que el autor está renunciando al proyecto, ¿no estás de acuerdo? :)
Uno de los más recientes, también relacionado con django-filter, es que DjangoFilterConnectionField no funciona con la captación previa, lo que genera toneladas de consultas. No he podido depurarlo, me pregunto si tiene alguna experiencia para compartir :)
Comentario más útil
Hola @gotexis. django-filter básicamente hace dos cosas:
Cuando no hay una clase
Filter
que construya la consulta que está buscando, tiene dos opciones:Filter.method
.Si puede generalizar la consulta, escribir un
Filter
sería más reutilizable; sin embargo,Filter.method
es útil para instancias únicas. Escribirías algo como: