2017-03-20 1 views
1

필터 및 "필터"를하여 검색 할 수 이상의 속성을 추가 할 수 있습니다 또는 이행 객체의 목록을 얻을 수에서장고의 검색어와의 get() 대 필터()

>>> Question.objects.filter(id=1) 
    <QuerySet [<Question: What's new?>]> 
    >>> Question.objects.get(pk=1) 
    <Question: What's new?> 
+0

설명서에서 설명하는 것처럼 QuerySet은 인스턴스의 모음입니다. 너 혼란 스럽네? –

답변

-2

를 얻을 차이점은 무엇 당신의 DB에 대한 문의.

+1

그건 그냥 잘못입니다. filter와 get은 같은 키워드를 사용하여 결과를 좁힐 수 있습니다. get은 정확히 하나의 결과를 나타내는 반면, 0..n은 필터를 사용하지 않습니다. – sphere

2

차이점은 필터가 쿼리 세트 개체를 반환하고, wheras get이 필요한 개체를 반환한다는 점입니다.

filter()를 사용하는 경우 일반적으로 기준과 일치하는 개체가 두 개 이상일 때마다이 작업을 수행합니다. 조건에 일치하는 항목이 발견되지 않으면 filter()는 오류를 던지지 않고 빈 쿼리 세트를 반환합니다.

get()을 사용하는 경우 기준과 일치하는 항목이 하나만 필요합니다. 항목이 없거나 조건에 맞는 항목이 여러 개있는 경우 오류가 발생합니다. 따라서 예외를 올바르게 처리하려면 try .. except .. 블록이나 get_object_or_404와 같은 바로 가기 기능을 사용해야합니다.