몇 가지 장고 앱을 개발했습니다. 모두 모델과 상호 작용하는 측면에서 매우 간단합니다.장고는 가장 효율적인 방법입니까?
더 나은 용어가 없기 때문에 여러 가지 다른보기가있는 건물을 지금 만들고 있습니다. "canned"검색 결과 페이지입니다. 이러한 페이지는 모두 동일한 모델의 결과를 반환하지만 다른 열에서 필터링됩니다. 우리는 타입에 대해 필터링 할 수도 있고, 또 다른 하나는 타입과 크기에 대해 필터링 할 수도 있고, 또 다른 하나는 크기 만 필터링 할 수도 있습니다. ...
나는 함수를 views.py에 작성했습니다. 이 페이지의 각각에 의해 사용 된, 그것은 kwargs를 안으로 가지고 가고 검색 할 것이다 표준이다. 최소값은 하나의 필터이지만 뷰 중 하나는 최대 4를가집니다.
kwargs dict에 필터 유형 중 하나가 포함되어 있는지 간단히보고 있습니다. 그렇다면이 값에 대한 결과를 필터링합니다 (이제이 코드를 작성했습니다).) 나는 오류 경우 사과,하지만 당신은 요점을 파악해야합니다
def get_search_object(**kwargs):
q = Entry.objects.all()
if kwargs.__contains__('the_key1'):
q = q.filter(column1=kwargs['the_key1'])
if kwargs.__contains__('the_key2'):
q = q.filter(column2=kwargs['the_key2'])
return q.distinct()
을 이제 장고 문서 (http://docs.djangoproject.com/en/dev/topics/db/queries/#id3)에 따라, 이러한 설정이 평가 될 때까지 DB 명중되지 않습니다 점에서, 괜찮습니다 요즘 나는 이것이 가장 효율적인 방법이 아니며 대신 Q 객체를 사용해야한다고 들었다.
다른 개발자의 답변을 찾고 있습니다. 내 방식은 현재 잘 작동합니다. 내 방식이 자원 POV에서 완전히 잘못된 경우, 최대한 빨리 변경됩니다.
미리 감사드립니다.
, 당신이 할 수 있습니다 : 당신은 그냥 유효한 필드가이 모델에 있다는 확인하는 애호가 솔루션을 원하는 경우
, 당신은 (AB)는
_meta
사용할 수 있습니다 우수한 django-toolbar (http://github.com/robhudson/django-debug-toolbar)를 사용하는 것을 고려해보십시오. 방문하는 각 페이지를 만드는 데 필요한 SQL 쿼리를 분석합니다. 이 정보를 사용하여 다양한 쿼리 구현을 테스트하는 데 도움을 얻을 수 있습니다. "이론적으로는 이론과 실습간에 차이가 없다는 것을 기억하십시오. 그러나 실제로는 실제로 존재합니다." - 우연히도 그 인용문은 "SQL Performance Tuning" –책에서 나온 것입니다. 감사합니다. 감사합니다. – picus