장고 크루드는 크게 두 부분으로 나뉘어서 진행한다. 첫번째 시간에는 모델과 DB 관련된 작업 위주로 배우고 ORM 을 사용하는 연습을 한다. 두번째 시간에는 뷰와 클라언트에서 DB까지 장고가 다루는 작업의 모든 것을 전체적으로 배운다.
table
이 class
라고 생각하면 쉽다.
class Menu(models.Model) :
#클래스 속성이 DB테이블의 컬럼이 된다.
name = models.CharField(max_length=20)
#테이블 이름 지정
class meta :
db_table = 'menu'
파이썬으 만든 모델을 데이터베이스에 테이블로 기록하기 위한 변환과정이라고 생각하면 된다.
#Django shell
#(manage.py 파일이 있는 디렉토리에서)
python manage.py makemigrations
python manage.py migrate
C.R.U.D는 ORM을 통해서 Database에 Table을 만들고 데이터를 생성(create), 조회(read), 수정(update), 삭제(delete)하는 것을 뜻한다. 이제부터 CRUD를 하는 대표적인 메소드를 소개한다.
(이 아래부터 import
생략)
#1
Menu.objects.create(name='음료')
#2
Menu(name='음료').save()
Menu.objects.get(id=1)
#1
Menu.objects.filter(name='음료').update(name='푸드')
#2
menu = Menu.objects.get(name='음료')
menu.name = '푸드'
menu.save()
Menu.objects.get(id=1).delete()
#반환값 : 삭제개수, 유형별 삭제횟수
참고 : 장고 공식 홈페이지 👉 링크
get_or_create()
해당하는 데이터가 있으면False
와 함께 데이터 반환, 없으면True
반환하고 데이터 새로 생성Menu.objects.get_or_create(name='음료')
bulk_create()
객체를 리스트 형태로 받아서 데이터를 새로 생성a1 = Menu(name='음료') a2 = Menu(name='푸드') Menu.objects.bulk_create([a1, a2])
count()
해당하는 데이터의 갯수 반환Product.objects.filter(name__contains='라떼').count()
first()
,last()
해당하는 데이터의 맨 처음, 맨 마지막 데이터를 반환
first()
는 인덱스 0번 ([0]
) 을 조회하는 원리product.objects.filter(name__contains='라떼').first() product.objects.filter(name__contains='라떼').last()
aggregate()
각종 수학 계산을 수행
예 )sum
Avg
Max
diff
등
values()
,values_list()
지정한 데이터를 각각 딕셔너리, 튜플 형태로 반환a = Menu.objects.all() a.values() # <QuerySet [{'id:1, 'name' : '음료'}]> a.values_list() # <QuerySet [(1, '음료')]>