-
django.10 django_QurySet APIDjango 2020. 11. 30. 12:25728x90
Model method 종류
all() , filter() , exclude() , values() , values_list() , get() , create() , count() , exists() , update() , delete() , first() , last() ..
QuerySet을 반환하는 경우 : <QuerySet [<Category: Category object (1)>, <Category: Category object (2)>]>
(list 형 자료구조 확인)
그렇지 않은 경우 : <Category: Category object (1)> , 9 , True ..
장고에서는 위 메서드와 같은 것들을 QuerySet API라 부른다.
all() : 테이블 데이타를 전부 가져오기 위해서는 Feedback.objects.all() 과 같이 all() 메서드를 사용
get() : 하나의 Row만을 가져오기 위해서는 get() 메서드를 사용
filter() : 특정 조건에 맞는 Row들을 가져오기 위해서는 filter() 메서드를 사용
exclude() : 특정 조건을 제외한 나머지 Row들을 가져오기 위해서는 exclude() 메서드를 사용
count() : 데이타의 갯수(row 수)를 세기 위해 count() 메서드를 사용
order_by() : 데이타를 키에 따라 정렬하기 위해 order_by() 메서드를 사용한다. order_by() 안에는 정렬 키를 나열할 수 있는데, 앞에 -가 붙으면 내림차순이다. 아래는 id를 기준으로 올림차순, createDate로 내림차순으로 정렬하게 된다.
rows = Feedback.objects.order_by('id', '-createData')
values() : 테이블의 원하는 column만 가져올때 사용
values_list() : values()는 키와 값의 형태로 가져오는데 이를 튜플 형태의 리스트로 반환해줌
create() : 테이블의 원하는 값을 새로 생성할때 사용
update() : 테이블의 값을 수정할때 사용
delete() : 값을 삭제할때 사용
first() : Queryset 결과의 내용 중 가장 첫번째 row만 반환
last() : Queryset 결과의 내용 중 가장 마지막 row만 반환
1. all() / QuerySet 반환
Menu.objects.all() # <QuerySet [<Menu: Menu object (1)>, <Menu: Menu object (2)>, <Menu: Menu object (3)>, <Menu: Menu object (5)>]>
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)>]>
해당 테이블을 구성하는 모든 Primary Key 값 반환 -> (PK)
2. filter() / QuerySet 반환
2.1 "카드" 삭제 후 "카드" 재 생성 (delete & filter)
>>> Menu.objects.filter(name="카드").delete() (1, {'products.Menu': 1}) >>> Menu.objects.create(name="카드") <Menu: Menu object (5)>
# 삭제 후 id값을 지정해주는 방식으로 접근하지 않을 경우 삭제된 id를 건너뛰고 생성됨
2.2
>>> Menu.objects.filter(name="상품") <QuerySet [<Menu: Menu object (3)>, <Menu: Menu object (6)>]>
# QuerySet 반환 - (PK, Id값)
3. exclude() / QuerySet 반환
>>> Menu.objects.exclude(name="상품") <QuerySet [<Menu: Menu object (1)>, <Menu: Menu object (2)>, <Menu: Menu object (5)>]>
# 상품을 제외한 나머지의 결과를 보여줌
4. values () / QuerySet 반환
>>> Menu.objects.values() <QuerySet [{'id': 1, 'name': '음료'}, {'id': 2, 'name': '푸드'}, {'id': 3, 'name': '상품'}, {'id': 5, 'name': '카드'}, {'id': 6, 'name': '상품'}]>
# 딕셔너리 형태의 리스트로 반환
5. values_list() / QuerySet 반환
Menu.objects.values_list() <QuerySet [(1, '음료'), (2, '푸드'), (3, '상품'), (5, '카드'), (6, '상품')]>
# 튜플 형태의 리스트로 반환
6. first () / QuerySet 으로 반환하지 않음
>>> a1 = Menu.objects.filter(name="상품") >>> a1.first() <Menu: Menu object (3)>
# first ()만 단독으로 쓸 수 없음 / Queryset 결과가 필요하기 때문
7. last() / QuerySet 으로 반환하지 않음
>>> a1.last() <Menu: Menu object (6)>
# last ()만 단독으로 쓸 수 없음 / Queryset 결과가 필요하기 때문
728x90'Django' 카테고리의 다른 글
django.9 django란? (0) 2020.11.30 django.8 Django Project 와 App 이해 (0) 2020.11.28 wecode_CRUD_1 과제 (0) 2020.11.28 django.6 가상환경 내에서 data 집어넣기 (0) 2020.11.28 django.4 스타벅스 모델링 과제_wecode (0) 2020.11.26