장고 쉘(shell)을 사용하여 Data를 생성(create)/조회(read)/업데이트(update)/삭제(delete)하는 방법을 알아보자.
메인위치에서 ./manage.py shell
를 입력하면 아래와 같이 나온다.
(InteractiveConsole)
>>>
장고 인터랙티브 콘솔(interactive console)로 들어온 것이다. 파이썬 프롬프트와 비슷하며, 파이썬의 모든 명령어를 사용할 수 있다.
>>> from products.models import Menu
Menu
모델을 products.models
에서 불러온다. 그런 다음 아래의 명령어로 모든 목록을 불러올 수 있다.
>>> >>> Menu.objects.all()
<QuerySet []>
아무 데이터도 들어있지 않은 빈 상태이기 때문에 위와 같은 결과를 얻었다. 이제 데이터를 생성해주자.
>>> Menu.objects.create(name='음료')
<Menu: Menu object (1)>
모델명.objects.create(생성할 내용)
의 명령어를 사용하면 객체가 생성된다.
제대로 작동했는지 확인해보면 아래와 같이 Menu에 객체가 하나 생성되었음을 알 수 있다.
>>> Menu.objects.all()
<QuerySet [<Menu: Menu object (1)>]>
>>> Category.objects.create(name='콜드 브루', menu_id=1)
<Category: Category object (1)>
>>> Category.objects.create(name='브루드 커피', menu_id=1)
<Category: Category object (2)>
category 모델에 위와 같이 두 객체를 생성하고 원하는 객체를 불러오는 작업을 해볼 것이다.
get
명령어나 filter
명령어를 쓸 수 있는데
🔆 get
명령어는 하나의 객체만을 불러올 수 있고 filter
명령어는 조건에 해당하는 모든 객체를 불러온다.
✔️ get
사용
>>> Category.objects.get(id=1)
<Category: Category object (1)>
✔️ filter
명령어 사용
>>> Category.objects.filter(menu_id=1)
<QuerySet [<Category: Category object (1)>, <Category: Category object (2)>]>
객체가 여러개 출력되는 filter
는 쿼리셋 형태로 결과가 출력된다.
객체 값을 바꾸는 update
명령어를 사용해 보자.
위에서 사용한 filter
를 사용해 변경하고자 하는 객체를 가지고 와서 update 해준다.
>>> Category.objects.get(id=1).name
'콜드 브루'
>>> Category.objects.filter(id=1).update(name='병음료')
1
>>> Category.objects.get(id=1).name
'병음료'
Category 테이블에서 id=1인 객체의 이름을 바꾸는 작업이다.
콜드 브루 --> 병음료
update와 마찬가지로 filter
를 사용해서 삭제할려는 객체를 가지고 온 뒤 delete 해준다.
>>> Category.objects.filter(id=1).delete()
(1, {'products.Category': 1})
>>> Category.objects.all()
<QuerySet [<Category: Category object (2)>]>
id = 1 인 객체를 불러온 뒤 삭제한 뒤 카테고리에 테이블에 있는 객체를 확인해 보면 두 개 였던 객체가 하나로 줄어든 것을 확인할 수 있다.