Totalement noob ici ....
https://docs.djangoproject.com/en/2.1/ref/contrib/postgres/search/#postgresql -fts-search-configuration
Salut @gotexis. Django-filter fait essentiellement deux choses :
Lorsqu'il n'y a pas Filter
classe
Filter.method
.Si vous pouvez généraliser la requête, écrire un Filter
serait plus réutilisable, cependant Filter.method
est utile pour les instances ponctuelles. Vous écririez quelque chose comme :
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 merci pour votre aide @rpkilby , donnez-moi s'il vous plaît quelques jours de plus pour digérer ce code...
En ce moment, je me cogne la tête avec du graphène-django qui s'intègre aux django-filtres.
J'espère (idéalement) implémenter cela avec GraphQL
Notez qu'il peut y avoir des problèmes avec la façon dont graphene-django enveloppe django-filter. par exemple, voir #927
@rpkilby Oui monsieur
Il semble qu'il y ait en effet des tas de problèmes avec Graphene étant donné à quel point Python + GraphQL est devenu impopulaire par rapport à Node, et l'auteur abandonne le projet, n'êtes-vous pas d'accord :)
L'un des plus récents, également lié à django-filter, est que DjangoFilterConnectionField ne fonctionne pas avec le préchargement, ce qui entraîne des tonnes de requêtes. Je n'ai pas réussi à le déboguer, je me demande si vous avez une expérience à partager :)
Commentaire le plus utile
Salut @gotexis. Django-filter fait essentiellement deux choses :
Lorsqu'il n'y a pas
Filter
classeFilter.method
.Si vous pouvez généraliser la requête, écrire un
Filter
serait plus réutilisable, cependantFilter.method
est utile pour les instances ponctuelles. Vous écririez quelque chose comme :