ManyToMany의 특징
django shell에서 model을 불러서 data를 불러오는 방법.
python manage.py shell # django shell 실행
from restaurant.models import MyTopping, MyPizza
>>> MyPizza.objects.all()
<QuerySet [<MyPizza: 신서방부대찌개>, <MyPizza: 본죽>]>
# 피자 이름 불러오기
>>> 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: 신서방부대찌개>]>