크루즈(cruise) 여행 말고 우리 모두 크루드(CRUD) 여행 GO!!😎
자 승객여러분, 여행에 앞서 CRUD
에 대해서 설명하겠습니다!
CRUD
란Create
,Retrieve
,Update
,Delete
를 뜻하는 말로,django
에서ORM
으로 조작하는 것들을 의미한다.
ORM??
ORM(Object Relational Mapping)
이란 간단히 말하면 우리가 직접 SQL
문으로 직접 DB
를 다루지 않고도 Tool을 사용해서 다룰 수 있는 것이다.
즉, django
에서의 python
언어를 SQL
문으로 번역시켜주는 번역기 역할을 한다고 생각하면 좋다!
Create
는 보통 Http method
중에서 POST
에서 작동한다.
request body
에 담긴 정보를 가져와서 models.py
에서 정의한 class
와 attribute
를 정의해서 DB data
를 생성해준다.
Retrieve
는 Http method
중에서 GET
에서 작동한다.
이미 저장된 데이터를 받아서 뿌려주는 역할을 한다.
Retrieve
는 2가지의 데이터를 얻는 방법이 있는데,
query set
데이터 형식으로 넘어오기 때문에 데이터를 추출하기 위해서는 별도의 과정이 필요하다.update
는 보통 POST
에서 많이 작동하지만, create
기능과 겹칠 수 있으니, 그때는 PATCH
와 PUT
을 이용해서 할 수도 있다.
update
를 하기 위해선 get
으로 변경할 객체를 먼저 가져오는 과정이 선행되어야 한다.
update
에는 2가지의 방법이 있다.
1. save()
get
으로 하나의 객체를 가져와서 직접 접근으로 수정 후 save()
이용.
mysql> select * from menu;
+----+--------+
| id | name |
+----+--------+
| 1 | 음료 |
| 2 | asd |
| 3 | 물품 |
+----+--------+
3 rows in set (0.00 sec)
2. update()
filter
로 query set
으로 가져와서 모든 데이터를 수정하는 update()
이용.
mysql> select * from menu;
+----+-------------------------+
| id | name |
+----+-------------------------+
| 1 | 똑같이 변경되라! |
| 2 | 똑같이 변경되라! |
| 3 | 똑같이 변경되라! |
+----+-------------------------+
3 rows in set (0.00 sec)
말그대로 데이터를 삭제하는 기능을 한다. http method
는 DELETE
를 쓴다.
update
와 같이 get/filter
이후에 delete()
로 데이터 삭제가 가능하다.
delete()
는 Object
이든 QuerySet
이든 한번에 삭제된다.
오늘은 진짜 헷갈리고 어려운 CRUD를 정리해봤다!
나의 멘탈은 부서졌지만.. 이글을 읽는 모두가 괜찮았으면 좋겠다..!
(난 이미 늦었어.. 먼저가...)
POST
가 update
/create
를 동시에 수행하는데, 그럴때 어떻게 구분하는지(PATCH
, PUT
)GET
은 list Comprehension
을 통해 반환해야 한다는 것!(모양은 객체지만, python
객체는 아니다!)update
를 하기위한 두가지 방법django
의 문서를 파고 파다보니 프로 도굴꾼이 된 느낌..django
모델 메소드를 파려고 하는데... 너무 무섭다..M2M, url path parameter... 다음은 너네다!!!💣💣
잘 봤습니다 ^^