У меня есть 2 модели в моем коде django:
class ModelA(models.Model):
name = models.CharField(max_length=255)
description = models.CharField(max_length=255)
created_by = models.ForeignKey(User)
class ModelB(models.Model):
category = models.CharField(max_length=255)
modela_link = models.ForeignKey(ModelA, 'modelb_link')
functions = models.CharField(max_length=255)
created_by = models.ForeignKey(User)
Say ModelA имеет 100 записей, все из которых могут иметь или не иметь ссылок на ModelB
Теперь скажите, что я хочу получить список каждой записи ModelA вместе с данными ModelB
Я бы сделал:
list_a = ModelA.objects.all()
Затем, чтобы получить данные для ModelB, мне пришлось бы делать
for i in list_a:
i.additional_data = i.modelb_link.all()
Однако это запускает запрос для каждого экземпляра i. Таким образом, выполняется 101 запрос.
Есть ли способ запустить все это всего за один запрос. Или, по крайней мере, меньше, чем 101 запрос.
Я попытался вставить ModelA.objects.select_related().all()
, но это не показало никакого эффекта.
Спасибо