0

我对 django 非常陌生,并且一直在尝试编写一个小应用程序。

我有以下三个模型类

class A(models.Model):
    account_id = models.AutoField(primary_key=True)
    account_number = models.CharField(max_length=25)
   
    def getCurrentBalance(self):
        total = 0
        for row in self.A_C.all().values('t_name').annotate(total_qty=Sum(F('quantity')*F('B_DATA.t_price'))):
            print(row)
        return total
   
  
class B(models.Model):
    t_name = models.CharField(primary_key=True, max_length=10)
    t_price = models.DecimalField(max_digits=20, decimal_places=4)
    

class C(models.Model):
    t_name = models.ForeignKey(B, models.DO_NOTHING, db_constraint=False, , related_name='B_DATA')
    account = models.ForeignKey(A, models.DO_NOTHING, related_name='A_C')
    quantity = models.DecimalField(max_digits=20, decimal_places=4)
    transaction_date = models.DateField()

我正在尝试在我的模型类 A 中编写一个方法来聚合其关系 B 中的值,该关系 B 又与模型 C 相关。

我很难编写查询来做一些在普通 SQL 中看起来像下面的事情。

select c.t_name,SUM(c.quantity * b.t_price) from C c, B b 
where c.t_name = b.t_name
group by c.t_name

我可以使用单独的查询(如下所示)检索我需要的值,但我确信 django 有更好的方法在单个查询中执行此操作。

self.A_C.all()[0].t_name.t_price
4

0 回答 0