Использование аннотации Django для работы с процентами - PullRequest
1 голос
/ 19 сентября 2019

Я создаю фильтр по процентам.Когда я ставлю 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 Ответ

1 голос
/ 19 сентября 2019

Вы достаточно близко, чтобы ссылаться на поле, вам нужно использовать F объектов [Django-doc] , поэтому вы можете фильтровать с помощью:

from django.db.models import <b>F</b>

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