仅在使用某些过滤器时才“ TypeError:不支持的操作数类型”

时间:2018-12-19 03:17:30

标签: django

当我使用filter(user=user, product=product)的筛选器时,它显示了unsupported operand type(s) for /: 'NoneType' and 'int'的错误。但是,当我仅使用filter(product=product)时,它没有显示任何错误。有解决方案吗?

这是我在views.py中使用的代码段

for product in Product.objects.all():
    product_total_value = Transaction.objects.filter(user=user,
        product=product).aggregate(Sum('value'))
    total = Transaction.objects.aggregate(Sum('value'))
    percentage = product_total_value['value__sum'] / total['value__sum'] * 100

1 个答案:

答案 0 :(得分:2)

这是因为 product_total_value['value__sum'] total['value__sum'] 具有 None 值。
因此,您必须按以下方式处理这些情况,

for product in Product.objects.all():
    product_total_value = Transaction.objects.filter(user=user, product=product).aggregate(Sum('value'))
    total = Transaction.objects.aggregate(Sum('value'))

    if product_total_value['value__sum'] and total['value__sum']:
        percentage = product_total_value['value__sum'] / total['value__sum'] * 100
    else:
        percentage = 0