我正在尝试访问模型中的装饰物。当我尝试访问这个balance变量来生成一个链接时,接收到所有的帐户时,我得到了这个错误。我想找到所有的帐户,有一个余额为0,所以完整的帐户。
accounts = BillingAccount.objects.filter(
provider=current_user.provider
).filter(
user__is_activated=True
).filter(
account__balance=0
)
@property
def balance(self):
payment_sum = Payment.objects.filter(
payment_package__id=self.id
).aggregate(
Sum('amount')
).get('amount__sum', 0.00)
if payment_sum is None:
payment_sum = 0
remaining = self.revised_out_of_pocket_bill - payment_sum
return remaining发布于 2015-03-26 01:41:44
balance是一个属性(用Python语言计算),但它在数据库中没有对应的属性(没有balance字段),所以您不能对其进行过滤(至少不能使用QuerySet filter方法)。
你可以迭代查询集来做你自己的过滤(不好,可能会导致性能问题)你也可以反规格化平衡(在模型中创建一个新字段)来存储平衡的结果,然后像你做的那样做一些过滤。
另一种选择是创建一个sql查询,以获得数据库动态计算的余额,然后对其进行过滤。
您可以查看.extra文档:https://docs.djangoproject.com/en/1.7/ref/models/querysets/#django.db.models.query.QuerySet.extra
https://stackoverflow.com/questions/29262606
复制相似问题