[Django] 장고 Shell (get, filter)

dhkim·2020년 7월 19일

Django

목록 보기
6/10

장고로 가상환경을 실행 한뒤 manage.py 가 들어있는 디렉토리에서 아래 명령어를 입력하면 shell에서 장고기능을 사용할 수있다

python manage.py shell

shell에서 모델파일을 import한후 <모델클래스명>.objects.all() 을 입력하면 모든 오브젝트를 불러올 수 있다.

shell에서 특정 name을 갖는 오브젝트를 불러올 수 있다

>>> from star.models import Drink

>>> Drink.objects.all()

#출력결과 (저장한 데이터 쿼리셋 형태로 불러온다)
<QuerySet [<Drink: Drink object (1)>, <Drink: Drink object (2)>, <Drink: Drink object (3)>, <Drink: Drink object (4)>, <Drink: Drink object (5)>, <Drink: Drink object (6)>, <Drink: Drink object (7)>, <Drink: Drink object (8)>, <Drink: Drink object (9)>, <Drink: Drink object (10)>, <Drink: Drink object (11)>, <Drink: Drink object (12)>, <Drink: Drink object (13)>, <Drink: Drink object (14)>, <Drink: Drink object (15)>, <Drink: Drink object (16)>, <Drink: Drink object (17)>, <Drink: Drink object (18)>, <Drink: Drink object (19)>, <Drink: Drink object (20)>, '...(remaining elements truncated)...']>

만약 id=1인 값의 내용만 가져오고싶으면 get메서드를 이용할수 있다
get 메서드는 쿼리셋이 아닌 쿼리셋안에 들어있는 객체의 형태로 불러온다

>>> Drink.objects.get(id=1)

# 출력결과
<Drink: Drink object (1)>

만약 id=1인 데이터의 이름을 보고싶다면

>>>drink = Drink.objects.get(id=1)
>>>drink.name

# 출력결과
'나이트로 바닐라 크림'

뒤에 .(db에 저장된 칼럼이름) 을 붙여 내용을 확인 할 수있다.
만약 객체가 아닌 쿼리셋의 형태로 불러오고싶다면 filter메서드를 사용하면 된다

>>>drink = Drink.objects.filter(id=1)
>>>drink

#출력결과
<QuerySet [<Drink: Drink object (1)>]>

get과는 다르게 출력결과에서 QuerySet 이란 내용이 생겼다
쿼리셋의 내용을 보고싶으면 .valses() 메서드를 이용하면 된다

>>>drink.values()

# 출력결과

<QuerySet [{'id': 1, 'name': '나이트로 바닐라 크림', 'category_id': 1}]>

이렇게 id=1인 값의 데이터내용을 모두 볼수있다

0개의 댓글