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

Python Discussion :

Ex�cution d'une fonction au chargement d'un objects.get


Sujet :

Python

  1. #1
    Membre tr�s actif Avatar de keitaro_bzh
    Homme Profil pro
    Est-ce int�ressant?
    Inscrit en
    Juin 2009
    Messages
    320
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : Est-ce int�ressant?

    Informations forums :
    Inscription : Juin 2009
    Messages : 320
    Par d�faut Ex�cution d'une fonction au chargement d'un objects.get
    Bonjour � tous,

    J'ai une question concernant l'ex�cution d'une fonction au chargmenet d'un "objects.get" ou d'un "objects.filter".
    Je m'explique. Je m'amuse � d�velopper une petite application web avec django.

    Pour faire simple, j'ai une classe compte d�crite comme ci-dessous dans mon models.py avec une fonction qui permet de calcul le solde du compte � partir des op�rations saisies (une autre classe)
    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
    class Compte(models.Model):
        libelle = models.CharField(max_length=200,blank=True)
        ....
        onArchive = models.BooleanField(default=False,blank=True)
        soldes = {}
     
        def __str__(self) -> str:
            return self.libelle
     
        def fn_get_soldes(self):
            # on va récupérer les soldes depuis les opérations associées
            OperationsDebit = Operation.objects.filter(typeOperation='D',compte_id=self.pk).aggregate(Sum('montant'))
            if OperationsDebit['montant__sum'] == None:
                OperationsDebit['montant__sum'] = 0.00
            OperationsCredit = Operation.objects.filter(typeOperation='C',compte_id=self.pk).aggregate(Sum('montant'))
            if OperationsCredit['montant__sum'] == None:
                OperationsCredit['montant__sum'] = 0.00
     
            self.soldes = {
                "soldeInitial" : self.soldeInitial,
                "soldePointe" : OperationsCredit['montant__sum'] - OperationsDebit['montant__sum'] + self.soldeInitial,
            }
    Dans mon fichier views.py, si je veux afficher le d�tails d'un compte sur ma page, j'ai ce code suivant
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    def compte_details(request,id):
        compte = Compte.objects.get(pk=id)
        compte.fn_get_soldes()
    Ca fonctionne tr�s bien. Mais la ou �a ne me plait pas, c'est que je veux faire une page avec tous les comptes. Mais la, �a marche plus car je ne peux utiliser ma fonction sur une liste d'objets
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    def comptes(request):
        comptes = Compte.objects.filter(onArchive=False)
    Je pourrais m'en sortir en bouclant sur la liste d'objets et pour chaque compte le mettre � jour. Ca fonctionnerait �galement. Mais je voudrais savoir s'il est possible d'ex�cuter cette fonction fn_get_soldes au moment ou l'objet est peupl� depuis la base?

    J'esp�re �tre assez claire et d�sol� si je n'utilise pas les bons termes...

    En vous remerciant pour votre aide

  2. #2
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 772
    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 772
    Par d�faut
    Citation Envoy� par keitaro_bzh Voir le message
    Mais je voudrais savoir s'il est possible d'ex�cuter cette fonction fn_get_soldes au moment ou l'objet est peupl� depuis la base?
    Ce "peuplement" ne se fait pas auto-magiquement mais sera le r�sultat de l'ex�cution d'une instruction dans le code que vous avez �crit.
    A cet endroit, on pourra appeler ce qu'on veut avant ou apr�s.
    Morale: soyez plus clair...

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

  3. #3
    Membre tr�s actif Avatar de keitaro_bzh
    Homme Profil pro
    Est-ce int�ressant?
    Inscrit en
    Juin 2009
    Messages
    320
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : Est-ce int�ressant?

    Informations forums :
    Inscription : Juin 2009
    Messages : 320
    Par d�faut
    Citation Envoy� par wiztricks Voir le message
    Morale: soyez plus clair...
    Je me base sur cette ligne qui fait de la "magie"
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    compte = Compte.objects.get(pk=id)
    Elle va chercher les donn�es dans la base et impl�menter mon objet avec les donn�es r�cup�r�es pour l'id en question. La question est de savoir si je peux surcharger cette fonction pour ex�cuter ma fonction fn_get_soldes en m�me temps. Comme si j'avais une fonction du type "charge_base_id" (exemple foireux non test�)

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class Compte(models.Model)
       libelle = models.CharField(max_length=200,blank=True)
       soldes = {}
     
       def __str__(self) -> str:
            return self.libelle
     
      def fn_get_soldes(self):
          #code récupérant les soldes
     
       def charge_base_id(self,idParam)
          self = Compte.objects.get(pk=idParam)
          self.fn_get_soldes()
    Ainsi d�s qu'une r�cup�ration d'un objet dans la base se fait, les soldes sont automatiquement calcul�s

  4. #4
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 772
    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 772
    Par d�faut
    Citation Envoy� par keitaro_bzh Voir le message
    La question est de savoir si je peux surcharger cette fonction pour ex�cuter ma fonction fn_get_soldes en m�me temps.
    Si j'ai compris la question, �a devrait se faire avec des Customs Managers.... mais ce n'est peut �tre pas la meilleure fa�on de...
    Apr�s, c'est plut�t de la programmation avanc�e... et je ne vais pas chercher des exemples sur Internet.

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

  5. #5
    Expert confirm�
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 100
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activit� : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 100
    Par d�faut
    Bonjour,

    Si la m�thode en question permet de modifier des champs en fonction de l'objet cr��, alors on pourrait peut-�tre utiliser la m�thode bulk_update.

    Si elle ne convient pas, alors effectivement le custom Manager pour cr�er sa propre requ�te est une excellente id�e, voir la seule � mon sens !

  6. #6
    Membre tr�s actif Avatar de keitaro_bzh
    Homme Profil pro
    Est-ce int�ressant?
    Inscrit en
    Juin 2009
    Messages
    320
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : Est-ce int�ressant?

    Informations forums :
    Inscription : Juin 2009
    Messages : 320
    Par d�faut
    Merci pour vos r�ponses.

    A la lecture du custom Manager, cela me semble pas mal. � creuser de ce cot� la.

Discussions similaires

  1. [D�butant] Ex�cution d'une fonction au chargement d'une autre fen�tre
    Par bourinatore dans le forum G�n�ral JavaScript
    R�ponses: 8
    Dernier message: 11/09/2015, 00h24
  2. Ex�cuter une fonction au chargement
    Par thais781 dans le forum G�n�ral JavaScript
    R�ponses: 3
    Dernier message: 06/12/2013, 14h33
  3. Ex�cuter une fonction au chargement d'une JSP
    Par mac&cheese dans le forum Struts 1
    R�ponses: 5
    Dernier message: 07/03/2011, 18h15
  4. excuter une fonction au chargement d'une page
    Par xess91 dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 04/12/2009, 20h11
  5. [Prototype] Ex�cution d'une fonction � la fin du chargement de la page
    Par Herman dans le forum Biblioth�ques & Frameworks
    R�ponses: 2
    Dernier message: 30/12/2008, 16h41

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