Django shell method비교

HYEYOON·2021년 1월 26일
0

all() vs values()

all과 values 둘다 테이블의 데이터를 read할 때 쓰는 메소드이다.

☑︎all()은 한 테이블의 모든 레코드를 가져올 수있다. 결과 값을 queryset으로 반환한다.
쿼리셋안에는 각 인스턴스가 포함되어있다.

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)...']>

☑︎values() 는 인스턴스가 아닌 dictionary를 포함하는 쿼리셋을 반환한다.
데이터에 입력한 모든 값이 나온다.

>>> Drink.objects.values()
<QuerySet [{'id': 1, 'category_id': 1, 'korean_name': '나이트로 콜드 브루', 'english_name': 'Nitro Cold Brew', 
'description': '나이트로 정통 커피의 캐스케이딩과 부드러운 콜드 크레!'}, {'id': 2, 'category_id': 1, 'korean_name': '나이트로 바닐라 크림', 'english_name': 'Nitro Vanilla Cream',
'description': '부드러운 목넘김의 나이트로 커피와 바닐라 크림의 매력을 한번에 느껴보세요!'}, {'id': 3, 'category_id': 1, 'korean_name': '돌체 콜드 브루', 
'english_name': 'Dolce Cold Brew', 'description': '무더운 여름철, 동남아 휴가지에서 즐기는 커피를 떠오르게 하는 스타벅스 음료의 베스트x베스트 조합인 돌체 콜드 브루를 만나보세요!'}, {'id': 4, 'category_id': 1, 'korean_name': '바닐라 크림 
콜드 브루', 'english_name': 'Vanilla Cream Cold Brew', 'description': '콜드 브루에 더해진 바닐라 크림으로 깔끔하면서 달콤한 콜드 브루를 새롭게 즐길  있는 음료입니다.'}, {'id': 5, 'category_id': 2, 'korean_name': '아이스 커피', 
'english_name': 'Iced Coffee', 'description': '깔끔하고 상큼함이 특징인 시원한 아이스 커피'}, {'id': 6, 'category_id': 2, 'korean_name': '오늘의 
피', 'english_name': 'Brewed Coffee', 'description': '신선하게 브루드(Brewed)되어 원두의 다양함이 살아있는 커피'}, {'id': 7, 'category_id': 3,
'korean_name': '더블 에스프레소 크림 라떼', 'english_name': 'Double Espresso Cream Latte', 'description': '달콤한 바닐라와 부드러운 풍미의 블론드 에스프레소!'}, {'id': 8, 'category_id': 3, 'korean_name': '아이스 더블 
스프레소 크림 라떼', 'english_name': 'Iced Double Espresso Cream Latte', 'description': '달콤한 바닐라와 부드러운 풍미의 블론드 에스프레소!'}, {'id': 9, 
'category_id': 3, 'korean_name': '에스프레소  파나', 'english_name': 'Espresso Con Panna', 'description': '에스프레소 샷에 풍부한 휘핑크림을 얹은 강렬하고 달콤한 음료'}, {'id': 10, 'category_id': 3, 'korean_name': '에스프레소 마키아또', 'english_name': 'Espresso Macchiato', 'description': '강렬한 에스프레소 위에 소량의 우유 거품이 얹어진 음료'}, {'id': 11, 
'category_id': 3, 'korean_name': '스타벅스 돌체 라떼', 'english_name': 'Starbucks Dolce Latte', 'description': '깊은 에스프레소와 깔끔한 무지방 우유가 어우러진 달콤한 음료'}, {'id': 12, 'category_id': 4, 'korean_name': '더블 에스프레소  프라푸치노', 'english_name': 'Double Espresso Chip 
Frappuccino', 'description': '리스트레토 에스프레소 2샷과 에스프레소 칩, 하프앤하프가 달고 진하게 어우러진 커피의 기본에 충실한 더블 에스프레소  프라푸치노를 만나보세요.'}, {'id': 13, 'category_id': 4, 'korean_name': '자바칩 프라푸치노', 'english_name': 'Java Chip Frappuccino', 'description': '커피 프라푸치노에 초콜릿,초콜릿 칩이 첨가된 아이스 블렌드로 달콤 아삭한 음료입니다.'}, {'id': 14, 'category_id': 5, 'korean_name': '자몽 셔벗 블렌디드', 'english_name': 'Grapefruit Sherbut Blended', 'description': '상큼함으로 끝까지 시원한 자몽 셔벗 블렌디드!'}, {'id': 15, 'category_id': 5, 'korean_name': '망고 바나나 블렌디드', 'english_name': 'Mango Banana Blended', 'description': '인기 음료인 망고 패션후르츠 블렌디드에 신선한 바나나 1개가 통째로 들어간 달콤한 프라푸치노'}, {'id': 16, 'category_id': 6, 'korean_name': '핑크 자몽 피지오', 
'english_name': 'Pink Grapefruit Starbucks Fizzio', 'description': '신선하게 착즙한 자몽이 스타벅스 만의 수제 탄산음료로 선보입니다.'}, {'id': 17, 
'category_id': 6, 'korean_name': '쿨 라임 피지오', 'english_name': 'Cool Lime Starbucks Fizzio', 'description': '그린  추출액이 들어간 라임 베이스에 건조된 라임 슬라이스를 넣고 스파클링한 시원하고 청량감 있는 음료입니다.'}, 
{'id': 18, 'category_id': 7, 'korean_name': '라임 패션 티', 'english_name': 'Lime Passion Tea', 'description': '새콤달콤한 히비스커스와 라임의 이국적인 조화가 매력적인 라임 패션 티를 만나보세요!'}, {'id': 19, 'category_id': 7, 'korean_name': '민트 블렌드 티', 'english_name': 
'Mint Blend Brewed Tea', 'description': '스피어민트, 페퍼민트,레몬버베나가 블렌딩된 상쾌한 허브티 입니다.'}, {'id': 20, 'category_id': 8, 
'korean_name': '시그니처  초콜릿', 'english_name': 'Signature Hot 
Chocolate', 'description': '유럽 스타일의 진한  초콜릿으로 휘핑크림과 코코아 파우더가 토핑된 음료.'}, '...(remaining elements truncated)...']>

get() vs filter()

위의 all, values와 마찬가지로 테이블의 데이터를 read할 때 쓰는 메소드이다.

☑︎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)>, 
<Category: Category object (3)>, <Category: Category object (4)>, 
<Category: Category object (5)>, <Category: Category object (6)>, 
<Category: Category object (7)>, <Category: Category object (8)>, 
<Category: Category object (9)>]>

create() vs save()

두 개 모두 데이터를 넣을 때 사용하는 메소드이다.

☑︎create()는 테이블에 데이터를 추가해주는 메소드로, 생성된 인스턴스를 반환한다.
아주 간단하게 데이터를 생성할 수 있는 방법이다.

>>> Category.objects.create(name='프라푸치노', menu_id=1)
<Category: Category object (1)>

☑︎반면에 save()는 create에 비해 조금 복잡하다.
변수를 만들어서 저장해줘야지 데이터가 생성된다.
save()는 insert 또는 update를 수행하는 메소드로 단일객체에 대해서 수정할 때 주로 쓰인다.

>>> i= Category(name='프라푸치노', menu_id=1)
>>> i
<Category: Category object (None)>  
>>> i.save()
>>> i
<Category: Category object (2)>
profile
Back-End Developer🌱

0개의 댓글