2017-06-20 1 views
0

Je les modèles suivants:valeur globale des relations suivantes

class Client(models.Model): 
    ... 

class Document(models.Model): 
    client = models.ForeignKey(Client, related_name='clients') 
    ... 

class MainVoiceActual(models.Model): 
    doc = models.ForeignKey(Document, related_name='documents') 
    value = models.IntegerField() 

Mon objectif est d'imprimer dans un modèle le total de toutes les valeurs appartenant à un document appartenant à un client spécifique. Pour ce faire, je voudrais ajouter une méthode calc_total à mon modèle Client.

J'ai essayé ce qui suit, mais il ne fonctionne pas:

class Client(models.Model): 
    name = models.CharField(max_length=150) 

    def calc_total(self): 
     docs = Document.objects.filter(client=self) 

     return sum(doc.mainvoiceactuals_set.value for doc in docs) 

J'obtiens une erreur 'Document' object has no attribute 'mainvoiceactuals_set'

Répondre

0

obtenu ce travail avec:

def calc_total(self): 
    voices = MainVoiceActual.objects.filter(doc__client=self) 
    return sum(voice.value for voice in voices)