Django querysets с использованием __lte
Могу ли я сделать что-то подобное в django/python без жесткого кодирования?
def get_rating_average(self, type):
               return list(super().aggregate(Avg(type)).values())[0]
def filter_rating_average_under(self, type):
               return super().filter(type__lte=self.get_rating_average(type=type))
               # FILTER WHERE rating_type is smaller than average type keyword#
#In my views.py I call something like this:
    context['item8'] = Stock.aggregators.filter_rating_average_under(type='mykeyword')
Я не хочу жестко кодировать ключевое слово в поле, поэтому есть ли способ отформатировать этот код? Чтобы {type}__lte работал и я мог выполнить этот запрос с разными ключевыми словами, а не только с одним?
Да, вы можете использовать:
from django.db.models import Q
def get_rating_average(self, type):
    return super().aggregate(result=Avg(type))['result']
def filter_rating_average_under(self, type):
    return super().filter(
        Q((f'{type}__lte', self.get_rating_average(type=type)))
    )