J'utilise le filtre IConTains pour rechercher des mots mais je veux seulement qu'il correspond à des mots entiers. par exemple. Si je cherchais du foie, je ne voudrais pas que cela retourne la livraison.
Ma requête ressemble à ceci p> J'ai vu le filtre Je n'ai pas accès à la base de données, mais si quelqu'un sait comment je peux le désactiver dans le code, je serais heureux de passer à l'utilisation d'une alternative. P> p> __ recherche code> Mais cela ne ramène pas les résultats avec 3 caractères ou moins et le site que je suis en construction contient beaucoup de ceux-ci qui pourraient être recherchés, par exemple "BBC" p>
3 Réponses :
On dirait que vous voulez une correspondance exacte insensible au cas.
MyModel.objects.filter(title__iexact=search_word)
Cela ne fonctionnerait pas car je souhaite toujours rechercher une partie d'une chaîne, mais Iexact exige que toute la chaîne correspondenne. Par exemple, si mon titre était "Ceci est un titre de test", je voudrais le constater si je cherchais "Titre du test"
Je vois. Vous voulez qu'il trouve 'Test Titre' mais pas "Titre de l'Est". J'ai compris.
Regexp est généralement suffisant: http://docs.djangoproject.com/fr/dev/ref/ Modèles / QuerySetSets / # Regex
Veuillez noter que la syntaxe d'expression régulière est celle du backend de base de données in python (sqlite) le regexp serait: p> dans mysql, vous avez: p>
Ceci avec docs.djangoproject.com/fr/dev/ref/ Modèles / QuerySets / # Iregex a résolu mon problème
Si vous auriez angularjs et service de repos implémenté avec TASTYPIE ou DRF, vous pouvez filtrer par tout Mots comme Bien sûr, $ http.get (uri, {'parames': {'Nomel__iregex': '[[[: <:]] Word [[[:>:]]'}) CODE> P>
Display_Name code> doit être activé pour filtrer dans la méta méta de la ressource TASTYPIE en tant que
filtrage = {'display_name': tout,} code> p> p>
Peut-être que vous pourriez utiliser Regex à la place ou ajoutez des espaces à Démarrage et fin de votre
Search_word CODE> String?
Je pensais à ajouter des espaces mais si le titre n'avait que 1 mot ou le mot est apparu au début ou à la fin du titre, cela ne fonctionnerait pas. Comment puis-je le faire via Regex?