我在下面的代码行中得到一个错误:
context['stock_margin'] = context['top_stock'].annotate(
Avg_purchase = ExpressionWrapper(F('total_puchase') / F('quantity_purchase'), output_field=FloatField()),
Avg_sales = ExpressionWrapper(F('total') / F('quantity'), output_field=FloatField()))
我是django的新手,不知道为什么会发生这种情况。
有人知道如何解决这个错误吗?
1条答案
按热度按时间1cklez4t1#
我是django的新手,不知道为什么会发生这种情况。
如果除以零,PostgreSQL会引发错误,因为除以零是未定义的。大多数其他数据库在这种情况下返回
NULL
。由于django-2.2,我们可以使用**
NullIf
**[Django-doc],因此可以使用:否则你可以使用**
Case
**[Django-doc]:如果
purchase_quantity
/quantity
因此大于零,我们执行除法,否则我们返回None
。在这两种情况下,对于我们除以零的记录,我们将返回None
。也就是说,在数据库中有
quantity
和quantity_purchase
等于零的对象有点奇怪。根据用例,您可能需要检查在哪里创建这些对象,以及是否要避免这样做。