使用Django Annotate处理百分比

时间:2019-09-19 15:44:46

标签: django filter django-queryset

我正在按百分比创建过滤器。当我输入X(百分比)时,它将列出所有出席的对象。 下面的代码有效。

def my_example(self, percent):
    from models import Product
    return Product.objects.filter(amount=((percent * F("capacity")) / 100))

但是我想改善。我的挑战是使用django注释。我正在尝试这样的事情:

 pct = Product.objects.annotate(pct=(percent * F("capacity") / 100)).filter(pct="amount")

有人有主意吗?

1 个答案:

答案 0 :(得分:1)

您非常接近,要引用一个字段,您需要使用F objects [Django-doc],因此可以使用:

from django.db.models import F

pct = Product.objects.annotate(
    pct=percent * F('capacity') / 100
).filter(pct=F('amount'))