TIL. Django Database Class(진행중 til Friday)

Kim Chioh·2021년 1월 21일
0
post-thumbnail

class 를 table과 같이 생각해라.
장고 각 앱안에 들어있다.

  • 테이블을 만들고 싶다?
  1. models.py 에 클래스 추가
  2. makemigrations 클래스를 테이블로 바꿀 준비를 마쳐라(파일들생성)
  3. migrate 테이블을 데이터베이스에 반영해라
    끝!!!

makemigration : 테이블을 만들어라. 네임, 디스크립션 등등을 만들어라 하는 준비를 하는 것들을 담아내는 폴더이다. 실행하면 migrations라는 폴더에 들어간다.
django/app/migrations/0001
migrate : 실제로 테이블을 반영한다.(migrations폴더 안에것들을 가져다가 실제 테이블에 구현)

  • 만약! 테이블에 컬럼을 하나 추가하고 싶다면,
  1. 클래스안에 하나 속성(변수)를 추가한다. 그리고 그 클래스는 models.py 안에 들어있고, 이것은 수정되었기 때문에 다시 makemigrations를 해줘야한다.
    django/app/migrations/0002 ->새로 추가된 컬럼만 추가됨 0001이없다면 무의미!~

  2. migrate한다!!

  • 데이터를 넣는법 하나 views.py에서 직접 db랑한다. 둘, shell(장고쉘)을 이용한다.

쉘이 얼마나 중요하냐면 1차 프로젝트때 장고쉘이 손에 익는것이 목표일정도.

python3 manage.py shell (쉘열기) -> 그다음 임포트하기!!

이그림은 카테고리에 데이터를 추가하는 그림이다.

클래스에 인스턴스 어떻게 만드는지 한번 보자.
1. 모델 모듈에 있는 클래스를 불러오자

class Product(models.Model)---->모델스안에 모델을 다 상속받아오겠다

Product.objects.all() 프로덕트클래스안에 있는 모든 객체들을 가져온다. CRUD 중 R read!

a = Product() 하면 a는 Product 클래스의 인스턴스다!!!!

클리스안에 속성 하나하나는 컬럼이랑 일치
a.name = '모나미'
a.price = 1000달러

그럼 이것은 테이블 에서는 로우!

  1. create vs save()

함수 내용
all() 테이블 모든 데이터 셋 가져오기
filter() 특정 조건에 부합하는 데이터셋 가져오기
exclude() 특정 조건을 제외한 데이터셋 가져오기
get() 특정 조건에 부합하는 1개의 데이터 가져오기
count() 가져올 데이터의 개수 가져오기
first() 첫번째 데이터 가져오기
last() 가장 마지막 데이터 가져오기
exists() 데이터 유무에 대한 결과(True, False)를 가져오기
order_by() 특정 필드 순서대로 정렬

create()를 할경우 save를 할 필요없이 저장됨.


values_list() 써보기

profile
Just do what to do

0개의 댓글