Django: Добавьте объект модели в агрегированный кверисет
Есть ли способ добавить объект в агрегированный набор запросов? Например:
qs = Model.objects.filter(title="abc").aggregate(likes=Count('likes'))
и я хочу сделать что-то вроде:
qs = Model.objects.filter(title="abc").aggregate(likes=Count('likes')).get(pk=1)
Когда оценивается набор запросов, его результаты кэшируются. Однако этот кэш не переносится, если вы используете другой метод, например filter
или order_by
или get
, для этого набора. Таким образом, вы не можете попытаться оценить больший набор и использовать фильтрацию на наборе запросов для получения меньших наборов без выполнения другого запроса.
Так что вы можете поступить следующим образом:
qs = Model.objects.filter(pk=1, title="abc")
если qs
это None
у вас нет данных, соответствующих запросу для начала, если это не None
вы можете пойти и сделать это следующим образом:
qs_agg = qs.aggregate(likes=Count('likes'))
qs
вот то, что мы получили в результате фильтрации