Если мои модели выглядят следующим образом:prefetch_related для нескольких уровней
class Publisher(models.Model):
pass
class Book(models.Model):
publisher = models.ForeignKey(Publisher)
class Page(models.Model):
book = models.ForeignKey(Book)
, и я хотел бы получить QuerySet для Publisher
я делаю Publisher.object.all()
. Если же хотите, чтобы убедиться в упреждением я могу сделать:
Publisher.objects.all().prefetch_related('book_set')`
Мои вопросы:
- Есть ли способ сделать это с помощью предзапросы
select_related
или я должен использоватьprefetch_related
? - Есть ли способ предварительной выборки
page_set
? Это не работает:
Publisher.objects.all().prefetch_related('book_set', 'book_set_page_set')
2. Двойное подчеркивание работает. –
1. Если '' 'имеет поле' OneToOne' для 'TextContent', было бы:' ... prefetch_related ('book_set__page_set__text_contents') 'или' ... select_related ('book_set__page_set__text_contents') ' –
Я считаю, что это быть второй версией. – jproffitt