sklass의 s-class 프로그래밍 blog

[Django] model의 데이터를 가져오는 get()과 filter()의 차이 본문

django

[Django] model의 데이터를 가져오는 get()과 filter()의 차이

sklass 2021. 12. 3. 12:14

아래의 사진은 Menu라는 테이블의 데이터들입니다. shop_id는 Shop이라는 테이블과 연결해주는 Foreign Key 역할을 하는 column입니다. 

sqlite3 의 데이터 현황

이런 경우, 만약 shop_id == 1인걸 모두 가져오고 싶다면 어떻게 해야할까요? 

아래는 get()을 사용하였을 경우입니다.

menu = Menu.objects.get(shop=shop)

Menu.objects.get()을 사용했을때 나오는 에러

위와 같이 에러가나는 이유는 get()의 경우, unique한 데이터를 가져올 때만 사용해야합니다. 즉, 가져오려는 데이터가 2개 이상인 경우, 위와 같은 에러를 리턴합니다.

 

그렇다면, 2개 이상의 데이터를 가져오고 싶을때는 어떤 함수를 써야할까요?

바로 filter()를 사용하면 됩니다.

menu = Menu.objects.filter(shop=shop)

Menu.objects.filter()를 사용하였을 때의 결과값