IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

Créer une fonction de recherche


Sujet :

Django Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    Septembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Créer une fonction de recherche
    Bonjour, je souhaite intégrer une fonction de recherche à mon application. Pour le moment je ne souhaite pas travailler sur les fichiers views,urls et les templates, je cherche juste à créer la fonction me permettant de rechercher dans ma base de données et d'afficher le résultat dans le terminal.

    J'ai commencé à chercher et j'ai trouvé ce code là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    import re
     
    def normalizequery(querystring)
        re.compile(r'[^\s";,.:]+').findall(query_string)
    Et aussi ce bout de code ( l'indentation est incorrecte)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    from django.db.models import Q
    from polls.models import Patient, Study etc....
     
    def getquery(querystring, searchfields):
        query = None # Query to search for every search term
        terms = normalizequery(querystring)
         for term in terms:
              orquery = None # Query to search for a given term in each field
         for fieldname in searchfields:
              q = Q(**{"%s__icontains" % fieldname: term})
              if orquery is None:
                 orquery = q
             else:
                 orquery = orquery | q
           if query is None:
                query = orquery
          else:
              query = query & or_query
          return query
    Test de la fonction :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    qry = get_query('Bob cancer ', ['name','description'])
     
    fe = Patient.objects.filter(qry)
     
    fe.query


    Le problème c'est que je ne sais pas ou placer ce bout de code, j'ai déjà une commande personnalisée qui me permet de remplir ma base de données mais dois-je recréer une autre commande personnalisée pour ce code ?

    Si quelqu'un a des conseils ou des infos je suis preneur, Merci d'avance

    Yann

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par yannmgl Voir le message
    Le problème c'est que je ne sais pas ou placer ce bout de code, j'ai déjà une commande personnalisée qui me permet de remplir ma base de données mais dois-je recréer une autre commande personnalisée pour ce code ?

    Si quelqu'un a des conseils ou des infos je suis preneur, Merci d'avance
    Vous avez probablement pompé ce code sur ce blog. Il y est aussi expliqué comment intégrer cela dans un projet Django, comment intégrer cela dans un template (dans les commentaires),...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Expert sécurité informatique
    Inscrit en
    Septembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Expert sécurité informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    ouai mais si je demande c'est parceque j'ai pas capte justement...

    Du coup j'ai commence a me creer une nouvelle commade personnalisee pour tester la fonction de recherche sans avoir a modifier les fichiers views,urls etc...Mais j'arrive pas a faire la distinction entre search_fileds et field_name. En gros j'essaye de comprendre le fonctionnement de la boucle suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for field_name in search_fields:
                    q = Q(**{"%s__icontains" % field_name: term})
                    if or_query is None:
                        or_query = q
                    else:
                        or_query = or_query | q
    Si quelqu'un comprend je suis preneur.

    Merci d'avance,
    Yann

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/09/2015, 11h36
  2. Créer une requête de recherche en fonction d'un critère
    Par zidane22 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 21/08/2015, 13h28
  3. Créer une fonction de recherche multi début de mot
    Par Pakkaï dans le forum Général JavaScript
    Réponses: 29
    Dernier message: 29/03/2007, 17h16
  4. Créer une Fonction recherche sur Access
    Par remwideco dans le forum Access
    Réponses: 4
    Dernier message: 30/01/2006, 10h36
  5. Créer une fonction mathématique pendant l'exécution
    Par zeprogrameur dans le forum Langage
    Réponses: 5
    Dernier message: 09/07/2004, 11h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo