我正在尝试从模型中访问装饰。当我尝试访问此平衡变量以生成链接时,接收所有帐户我收到此错误。我想查找余额为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
答案 0 :(得分:0)
balance是一个属性(在Python中计算),但它在数据库中没有对应物(没有平衡字段),所以你不能对它进行过滤(至少不使用QuerySet过滤方法)。
您可以迭代查询集来进行自己的过滤(不好,可能会导致性能问题) 您还可以对天平进行非规范化(在模型中创建一个新字段)以存储余额的结果,然后像您一样进行一些过滤。
另一种选择是创建一个sql查询,以便动态获取数据库计算的余额,然后对其进行过滤。
您可以查看.extra文档:https://docs.djangoproject.com/en/1.7/ref/models/querysets/#django.db.models.query.QuerySet.extra