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)
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
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, }
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
3
4 def compte_details(request,id): compte = Compte.objects.get(pk=id) compte.fn_get_soldes()
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?
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 def comptes(request): comptes = Compte.objects.filter(onArchive=False)
J'esp�re �tre assez claire et d�sol� si je n'utilise pas les bons termes...
En vous remerciant pour votre aide
Partager