django 4-5 shell

Grace Goh·2022년 10월 12일
0

Django

목록 보기
22/32

ManyToMany의 특징

django shell에서 model을 불러서 data를 불러오는 방법.

python manage.py shell # django shell 실행


from restaurant.models import MyTopping, MyPizza 
>>> MyPizza.objects.all()  
<QuerySet [<MyPizza: 신서방부대찌개>, <MyPizza: 본죽>]>

MyPizza는 우리가 만든 ORM이다. MyPizza를 불러서 `.object.all()` 해주면 전체 데이터를 불러올 수 있다.
# 피자 이름 불러오기

>>> MyPizza.objects.get(pizza_name='본죽')
<MyPizza: 본죽>
>>> MyPizza.objects.get(pizza_name='신서방부대찌개')
<MyPizza: 신서방부대찌개>

# 토핑 불러오기

>>> MyPizza.objects.get(pizza_name='본죽').pizza_topping.all()
<QuerySet [<MyTopping: 혜바라기유>, <MyTopping: 토마토>]>
>>> MyPizza.objects.get(pizza_name='신서방부대찌개').pizza_topping.all() 
<QuerySet [<MyTopping: 혜바라기유>, <MyTopping: 돼지고기>, <MyTopping: 토마토>]>

one to many와 다른 many to many
특정 토핑이 들어가 있는 피자들을 불러오기

이 원리를 이용하여 팔로잉-팔로우 기능 구현한다.

(venv) PS C:\Users\gracegoh\Desktop\MySpartaSns> python manage.py shell
Python 3.8.7 (tags/v3.8.7:6503f05, Dec 21 2020, 17:59:51) [MSC v.1928 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.                        
(InteractiveConsole)                                                                          
>>> from restaurant.models import MyTopping, MyPizza
>>> MyTopping.objects.all()
<QuerySet [<MyTopping: 혜바라기유>, <MyTopping: 돼지고기>, <MyTopping: 토마토>]>
>>> MyTopping.objects.get(topping_name='혜바라기유')                            
<MyTopping: 혜바라기유>
>>> MyTopping.objects.get(topping_name='혜바라기유').mypizza_set.all()
<QuerySet [<MyPizza: 신서방부대찌개>, <MyPizza: 본죽>]>
>>> MyTopping.objects.get(topping_name='돼지고기').mypizza_set.all()   
<QuerySet [<MyPizza: 신서방부대찌개>]>
>>> MyTopping.objects.get(topping_name='토마토').mypizza_set.all()   
<QuerySet [<MyPizza: 본죽>, <MyPizza: 신서방부대찌개>]>
profile
Español, Inglés, Coreano y Python

0개의 댓글