학습주제
장고의 모델 필드 활용하기
학습내용
https://docs.djangoproject.com/en/4.2/
장고 도큐멘테이션에 접속
The modle layer 찾기
Field type을 누르면 어떤 필드들이 있는지 알아볼 수 있음.
불린 값을 저장하는 필드
question 제목 저장시 사용
날짜를 저장하는 필드, 시간까진 저장이 안됨.
날짜와 시간까지 저장하는 필드
실수를 저장하는 필드
Json 타입으로 데이터를 저장할 때 사용
캐릭터보단 좀 더 긴 텍스트들을 저장할 때 사용.
필드를 추가할 때 어떻게 써야하는지 참고.
전에 만들었던 모델에 불린, float 필드 추가 해보기로 함.
불린 필드는 is_무언가
형태로 필드 제목을 생성함.
is_something = models.BooleanField(default=False)
기본값이 False인 불린필드가 만들어짐.
average_score = models.FloatField(default=0.0)
기본값이 0인 실수 필드 생성.
모델에 반영된걸 테이블에 반영하기 위해선, 마이그레이션을 만들고 마이그레이트를 통해 테이블에 반영하는 작업이 필요함.
python manage.py makemigrations
question에 두 필드를 추가하는 마이그레이션이 만들어졌다. 이제 마이그레이트를 하면,
python manage.py migrate
실행된 마이그레이션은 어떻게 테이블에서 확인할 수 있을까?
데이터베이스에 접근 -> sqlite3 (장고에서 쓰고 있는 기본 데이터베이스)
최상단에 db.sqlite3
이 있는 것을 확인할 수 있다.
sqlite3을 cmd에서 쓰려고 하니, 인식하지 못하였다. 이는 환경변수에서 sqlite를 설정해줘야 한다.
https://lee-mandu.tistory.com/449
환경 변수를 설정했는데도 인식이 안돼, vs code를 재부팅하니 정상적으로 인식되었다.
sqlite 나가는 법은 ctrl + c
데이터베이스의 터미널로 접속한 모습.
.tables
명령어를 입력
테이블의 목록을 볼 수 있다.
polls_choice, polls_question 테이블이 생성된 것을 볼 수 있음
SELECT * FROM django_migrations;
로 들어가보면
여러 마이그레이션이 돈 것을 확인 할수 있다. 아래로 내리면
polls 첫번째, 두번째 마이그레이션이 돈 것을 볼 수 있다.
테이블의 구조를 보고싶으면,
.schema polls_question
이제 아까 실습 때 만들었던 불필요한 필드를 제거해 보기로 한다.
두 필드를 지운다는 것은, 마지막 마이그레이션을 취소하고 0001 상태로 돌아가는 것.
python manage.py migrate polls 0001
polls 앱의 마이그레이션을 0001 상태로 되돌려라라는 뜻.
.schema polls_question
으로 확인하면 잘 지워진 것을 확인할 수 있다.
그러나 다시 migrate을 돌리게 되면, 0002가 남아있어 필드가 복구된다. 이에 vs code로 넘어가
0002를 지워준다.
지워준 후, migrate을 돌려보자 오류가 난다
마이그레이션은 돌았다고 하는데, 모델에 반영되지 않은 내용이 있다고 함.
이 필드를 추가한 부분도 지워줘야함.
꼭 코드를 수정하고 전체 저장을 해줘야 함. 안그러면 계속 오류남.