2017-06-09 10 views
0

Ich habe zwei Modelle, die auf 2 Felder mit einer. Filter-Methode übereinstimmen müssen. Modell B hat nur 1 eindeutigen Code, während Modell A diesen Code mehrere Male mit mehreren Mengen haben kann. Also Modell B Menge sollte die Summe für jedes Auftreten des Codes in Modell A Ich glaube, ich fand den richtigen Weg, um die Felder und erhalten Sie die Menge_sum, aber ich bin mir nicht sicher, wie Sie die Menge_sum dem zugehörigen Code in Model hinzufügen BUpdate-Mengen in einem Modell mit Summe der Mengen in einem anderen

class ModelA(): 
    code = models.IntegerField(default=0) 
    department = models.CharField(max_length=100) 
    quantity = models.IntegerField(default=0) 

class ModelB(): 
    code = models.IntegerField(default=0) 
    department = models.CharField(max_length=100) 
    quantity = models.IntegerField(default=0) 

    def update_quantity(self): 
     #calculate sum of quantity from ModelA() 
     sum_quantity = ModelA.objects.filter(
      department=self.department, 
      code=self.code 
     ).aggregate(
      quantity_sum=Sum(F('quantity')) 
     ) 

     #define save ?? 

Antwort

0

Versuchen Sie, die folgenden

class ModelB(): 
    code = models.IntegerField(default=0) 
    department = models.CharField(max_length=100) 
    quantity = models.IntegerField(default=0) 

    def update_quantity(self): 
     #calculate sum of quantity from ModelA() 
     sum_quantity = ModelA.objects.filter(
      department=self.department, 
      code=self.code 
     ).aggregate(
      quantity_sum=Sum(F('quantity')) 
     ) 

     self.quantity = sum_quantity["quantity_sum"] 
     self.save() 
Verwandte Themen