Работа с проектом django и попытка ускорения вызовов. Я заметил, что Django автоматически выполняет второй запрос, чтобы усмотреть любые отношения с внешним ключом. Например, если мои модели выглядит следующим образом:Django откладывание внешнего ключа вверх
Model Person:
name = model.CharField("blah")
Model Address:
person = model.ForeignKey(Person)
Тогда я делаю:
p1 = Person("Bob")
address1 = Address(p1)
print (p1.id) #let it be 1 cause it is the first entry
тогда, когда я звоню:
address1.objects.filter(person_id = "1")
я получаю:
Запрос # 1: SELECT address
. address
Запрос № 2: SELECT person
. id
, person.name
ОТ person
Я хочу избавиться от второго вызова, запроса №2. Я попытался использовать «defer» из документации django, но это не сработало (на самом деле это делает еще больше вызовов). «значения» - это возможность, но на самом деле есть еще много полей, которые я хочу потянуть. Единственное, что я хочу сделать, это не оценивать FOREIGN KEY. Я был бы счастлив вернуть человека или нет. Это значительно сокращает время выполнения, особенно когда я выполняю команду, например: Address.objects.all(), потому что Django оценивает каждый внешний ключ.
Я обнаружил, что мой __unicode__ сделал ссылку self.house.id. Это, похоже, прояснило проблему! Благодарю. Я не могу выдвигать свою кандидатуру из-за недостаточной репутации, но люди, которые могут это продвинуть! – user1639926
Спасибо. Вы все равно можете принять ответ. –