먼저 각 요청에 대해 명시 적 쿼리를 코딩하므로 거의 모든 요청에 대해이 작업이 실제로 필요한지 확인해야합니다. A get
쿼리는 즉각적이며 게으른 filter
과 반대입니다. 당신이 더 게으른하고 싶었 경우 게으른 접근을 시도 할 경우에 당신은 ...
def add_wedding_context(request):
id_ = request.GET.get('wedding_id', None)
wedding = None
if id_ is not None:
try:
wedding = Wedding.objects.get(id=id_)
except Wedding.DoesNotExist:
pass
return {'wedding':wedding}
을 작은 "get_wedding"래퍼에서 Get 포장, 또는 filter
을 사용하고 그냥 목록에서 잡아 수 실제로 객체를 사용하는 경우 쿼리가 실행됩니다 있도록, 당신은 게으른 객체를 포장 할 수 있습니다
from django.utils.functional import SimpleLazyObject
from functools import partial
def get_wedd_or_none(id_):
try:
return Wedding.objects.get(id=id_)
except Wedding.DoesNotExist:
return None
def add_wedding_context(request):
id_ = request.GET.get('wedding_id', None)
if id_ is not None:
lazy = SimpleLazyObject(partial(get_wedd_or_none, id_))
return {'wedding': lazy}
else:
return {'wedding': None}
출처
2012-07-31 04:03:57
jdi
는 아직 상황에 맞는 프로세서를 만들려고 있나요? 너는 네가하는 일을 정확히 묘사 한 것처럼 들린다. url을 읽고 쿼리를 반환하는 함수를 만듭니다. – jdi