首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError:相关字段的查找无效: balance

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

Stack Overflow用户
提问于 2015-03-26 01:34:05
回答 1查看 539关注 0票数 0

我正在尝试访问模型中的装饰物。当我尝试访问这个balance变量来生成一个链接时,接收到所有的帐户时,我得到了这个错误。我想找到所有的帐户,有一个余额为0,所以完整的帐户。

代码语言:javascript
复制
    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
EN

回答 1

Stack Overflow用户

发布于 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29262606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档