django 프로젝트를 작업하고 호출 속도를 높이려고합니다. Django는 외래 키 관계를 제거하기 위해 두 번째 쿼리를 자동으로 수행합니다. 내가 전화 할 때 다음Django가 외래 키 조회를 지연합니다.
p1 = Person("Bob")
address1 = Address(p1)
print (p1.id) #let it be 1 cause it is the first entry
을 : 다음
Model Person:
name = model.CharField("blah")
Model Address:
person = model.ForeignKey(Person)
내가합니다
address1.objects.filter(person_id = "1")
를 내가 얻을 :
쿼리 # 1 : SELECT 예를 들어 내 모델처럼 보이는 경우 address
. id
, address.person_id
FROM address
쿼리 # 2 : SELECT person
. id
, person.name
FROM person
두 번째 호출 인 질의 # 2를 없애고 싶습니다. 나는 장고 문서에서 "지연"을 사용하여 시도했지만, 작동하지 않았다. (사실 더 많은 호출을 만든다.) "가치"는 가능성이 있지만 실제로는 더 많은 분야를 끌어 들이고 있습니다. 내가하고 싶은 유일한 목적은 외래 키를 평가하는 것이 아닙니다. person_id를 다시 가져 오게되어 기쁠 것입니다. 이는 Django가 모든 외래 키를 평가하기 때문에 Address.objects.all()과 같은 명령을 수행 할 때 특히 런타임을 단축시킵니다.
내 __unicode__이 self.house.id를 참조한 것으로 나타났습니다. 그것은 문제를 해결하는 것처럼 보였습니다! 감사. 나는 충분한 명성 때문에 upvote 할 수없는 사람들은 이것을 upvote 할 수있다! – user1639926
감사합니다. 여전히 답을 수락 할 수 있습니다. –