Получить плоский Queryset prefetch_related объектов из родительского набора запросов - PullRequest
0 голосов
/ 05 февраля 2020

Если у меня есть такие модели:

class A(models.Model):
  ...


class B(models.Model):
  a = models.ForeignKey(A)


class C(models.Model): 
  b = models..ForeignKey(B)

Я могу получить полный набор запросов:

qs = A.objects.all().prefetch_related('b_set', 'b_set__c_set')
>> <QuerySet [<A: A object (1)>, <A: A object (2)>, ... ]>

Я хочу знать, есть ли способ получить все C объекты в плоском наборе запросов, например:

qs['b_set__c_set']
>> <QuerySet [<C: C object (1)>, <C: C object (2)>, ... ]>

1 Ответ

1 голос
/ 05 февраля 2020

Вы могли бы сделать запрос на модели C, просто проверив все C, которые имеют значение a? Итак,

C.objects.filter(b__is_null=False, b__a__isnull=False)

Это достигнет того, что вы ищете?

...