0
votes

Filtre de recherche Django DF

Je veux obtenir une image comme plusieurs mots de recherche à la fois:

vues.py: p> xxx pré>

modèles.py: p> xxx p>uLs.py:

localhost:8000/api/image_search?search=boxing cricket kohli marykom


6 commentaires

Est-ce que cela répond à votre question? Comment utiliser un filtre normal avec SearchFilter Sur le cadre de repos Django?


non je ne veux pas que j'ai besoin de juste ou de condition entre les mots-clés de recherche


Avez-vous essayé de séparer les mots-clés avec & comme ceci: localhost: 8000 / API / image_search? Rechercher = Boxing & Cricket & Kohli & Marykom ?


oui ça ne fonctionne pas Voir l'image


Essayez ceci: localhost: 8000 / API / image_search? Rechercher = Boxe, cricket, kohli, marykom


Cela ne fonctionne pas sa seule recherche de boxe, de cricket, de kohli


3 Réponses :


1
votes

Je vous suggère d'utiliser django-filtre pour ce cas, vous pouvez lire plus ici:

https://www.django-res-Framework.org/api-guide/filtering/#djangofilterbackend

< un href = "https://django-filter.readthedocs.io/fr/latest/guide/rest_framework.html" rel = "NOFOollow NOREFERRER"> https://django-filter.readthedocs.io/fr/Latest/Guide /Rest_Framework.html

Si vous ne voulez rien installer - vous pouvez remplacer get_queryset méthode de votre listApiview . Vous devez obtenir tous les paramètres de requête dont vous avez besoin et retourner le query filtré par eux. Dans ce cas, votre code sera comme celui-ci: xxx

Dans ce cas, assurez-vous de supprimer filtre_backends , search_fields et QuoiySet Champs de ImagesarchView Classe


3 commentaires

@afk Il y avait une faute de frappe dans image_keyword Filtre Nom de l'argument. Essayez la version fixe de l'extrait


Je pense que c'est le même code si je cherche comme ceci Localhost: 8000 / API / image_search? Rechercher = Boxer Mary Kom Sis montrant l'image avec un mot-clé d'image exacte s'il suffit de rechercher le boxeur, alors il ne reste plus rien


Aussi si j'ajoute un autre mot clé d'image différente avec, sa ne montre rien



0
votes

Le package de filtres Django-Rest-Framework fonctionne avec la classe Djangofilterbackend et vous permet de créer facilement des filtres dans des relations ou de créer plusieurs types de recherche de filtres pour un champ donné.

Lire Il

qui fait partie de docs pour vous, je pense < / p>

title__STARTSWITH = OMS, titre__Startswith = quoi Titre__Startwith% 3DWho, Titre__Startwith% 3DQue (Title__Startswith% 3DWho) | (Title__Startwith% 3DQue) % 28TItle__Startwith% 253dwho% 29% 20% 7c% 20% 28TItle__Startwith% 253DQue% 29 Filtres =% 28TItle__Startwith% 253dwho% 29% 20% 7c% 20% 28TItle__Startwith% 253DQue% 29


0 commentaires

0
votes

Avez-vous essayé de spécifier le paramètre de recherche plusieurs fois comme celui-ci? Dans ce cas, il devrait "rechercher" Query Param doit se retrouver en tant que liste.

localhost:8000/api/image_search?search=&search=boxing&search=cricket&search=kohli&search=marykom


1 commentaires

ouais j'ai essayé de rechercher le seul paramètre seulement