<p>更简洁的方法是在ShareType模型中加入一个函数,用于计算股票数量、支付金额和未支付金额</p>
<pre><code>from django.db.models import Sum
class ShareType(models.Model):
code = models.CharField(max_length=10, null=False, blank=False)
type = models.CharField(max_length=56, null=False, blank=False)
def number_of_shares(self):
return ShareAllocation.objects.filter(share_type = self).count()
def amount_paid(self):
return ShareAllocation.objects.filter(share_type = self).aggregate(Sum('amount_paid'))
def amount_unpaid(self):
return ShareAllocation.objects.filter(share_type = self).aggregate(Sum('amount_unpaid'))
class ShareAllocation(models.Model):
session_key = models.CharField(max_length=40, null=True)
share_type = models.ForeignKey(ShareType, on_delete=models.CASCADE, null=True)
share_holder = models.ForeignKey(ShareHolder, on_delete=models.CASCADE, null=True)
number_of_shares = models.IntegerField(null=False, blank=False)
amount_paid = models.IntegerField(null=False, blank=False)
amount_unpaid = models.IntegerField(null=False, blank=False)
is_beneficial_owner = models.BooleanField(null=False, blank=False)
</code></pre>
<p>然后,您可以像读取字段一样读取这些值</p>