Bonjour, j'utilise depuis plusieurs années Python (j'utilise actuellement la version 3.7) mais je suis débute sur le framework Django (version 2.11).

Je me suis lancé dans le projet de créer un site web avec ce framework pour une association de mon école dans le but de sécuriser nos données et améliorer notre façon de procéder (nous avons actuellement un logiciel écrit en VBA assez capricieux et surtout disgracieux visuellement.)

Jusqu'ici tout va bien, j'arrive à coder le peu de fonctionnalités dont nous avons besoin : je veux simplement développer un site qui ne sera (a priori) jamais déployé et qui enregistre des transactions (achat d'un produit, ajout d'argent sur un compte fictif interne à notre asso).

Seulement voilà, une des fonctionnalités très utile que je voudrais mettre en place est une barre de recherche avec autocomplétion qui puisse nous permettre d'accéder plus rapidement à l'interface d'un client (qui n'est pas réellement un client puisque le site fonctionnera en local). Cela fait plusieurs jours que je bataille avec des recherches Google en tout genre pour arriver à mes fins, sans succès (la plupart des tutos concernant ce sujet utilise PHP).

Le modèle sur lequel je veux baser l'autocomplétion est le modèle Klient (voici mon fichier models.py) :

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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 
from django.db import models
import pandas as pd
from django.core.files import File
import datetime
 
class Klient(models.Model):
    id_klient = models.AutoField(primary_key=True)
    nom_klient = models.CharField(max_length=42)
    prenom_klient = models.CharField(max_length=42)
    argent = models.FloatField(default=0.0)
    date = models.DateTimeField(auto_now_add=True, auto_now=False, 
                                verbose_name="Date ajout")
    associations=models.TextField(null=True)
    historique_transactions=models.FileField(default='/Users/antoinepradier/Desktop/site/site_kfet/site_K/historique/historique_transactions.xlsx')
 
    def __str__(self):
        return(self.nom_klient+' '+self.prenom_klient)
 
    def achat_article(self,id_art):
        article=Article.objects.get(id_article=id_art)
        if 'Kfet' in self.associations:
            self.argent-=(article.prix)*(0.7)
        else:
            self.argent-=article.prix
        self.save()
        path=('/Users/antoinepradier/Desktop/site/site_kfet/site_K/historique/historique_transactions.xlsx')
        data=pd.read_excel(path)
        date_now=str(datetime.datetime.now())[:16]
        l=[{'nom':self.nom_klient,'prenom':self.prenom_klient,'date':date_now,'article':article.nom_article}]
        data2=pd.DataFrame(l)
        to_concat=[data2,data]
        data_new=pd.concat(to_concat)
        data_new.to_excel(path,sheet_name='Feuil1')
 
 
    def metdelathune(self,montant):
        self.argent+=float(montant)
        self.save()
        path=('/Users/antoinepradier/Desktop/site/site_kfet/site_K/historique/historique_ajout_thune.xlsx')
        data=pd.read_excel(path)
        date_now=str(datetime.datetime.now())[:16]
        l=[{'nom':self.nom_klient,'prenom':self.prenom_klient,'date':date_now,'montant':montant}]
        data2=pd.DataFrame(l)
        to_concat=[data2,data]
        data_new=pd.concat(to_concat)
        data_new.to_excel(path,sheet_name='Feuil1')
 
 
class Article(models.Model):
    id_article = models.PositiveIntegerField(primary_key=True)
    nom_article = models.CharField(max_length=42)
    prix = models.FloatField()
 
    def __str__(self):
        return(self.nom_article)
Ce que je veux faire est simplement une page d'accueil ne contenant que la barre de recherche avec autocomplétion qui, une fois le client trouvé, redirigera vers une page correspondant à l'interface du client (contenant ses infos personnelles : nom, prénom, argent disponible, date de création, associations) et où on peut effectuer des actions (acheter des produits ou remettre de l'argent). Je reprécise que ces actions seront effectuées par nous-même et non par le client : il n'y aura pas d'interface utilisateur et que j'ai déjà codé cette partie du site sans problème.

Voilà tout, en espérant que quelqu'un puisse m'aider à pallier ce problème pour que je puisse m'attaquer au design du site .

Merci d'avance.

Antoine