TypeError:相关字段无效查找:balance

时间:2015-03-25 17:34:05

标签: python django jinja2

我正在尝试从模型中访问装饰。当我尝试访问此平衡变量以生成链接时,接收所有帐户我收到此错误。我想查找余额为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

1 个答案:

答案 0 :(得分:0)

balance是一个属性(在Python中计算),但它在数据库中没有对应物(没有平衡字段),所以你不能对它进行过滤(至少不使用QuerySet过滤方法)。

您可以迭代查询集来进行自己的过滤(不好,可能会导致性能问题) 您还可以对天平进行非规范化(在模型中创建一个新字段)以存储余额的结果,然后像您一样进行一些过滤。

另一种选择是创建一个sql查询,以便动态获取数据库计算的余额,然后对其进行过滤。

您可以查看.extra文档:https://docs.djangoproject.com/en/1.7/ref/models/querysets/#django.db.models.query.QuerySet.extra