5. 장고의 다양한 모델 필드 활용하기

data_hamster·2023년 4월 24일
0

학습주제
장고의 모델 필드 활용하기

학습내용

https://docs.djangoproject.com/en/4.2/
장고 도큐멘테이션에 접속

The modle layer 찾기
Field type을 누르면 어떤 필드들이 있는지 알아볼 수 있음.

주로 쓰이는 필드

BooleanField


불린 값을 저장하는 필드

CharField


question 제목 저장시 사용

DateField


날짜를 저장하는 필드, 시간까진 저장이 안됨.

DateTimeField


날짜와 시간까지 저장하는 필드

FloatField


실수를 저장하는 필드

JSONField


Json 타입으로 데이터를 저장할 때 사용

TextField


캐릭터보단 좀 더 긴 텍스트들을 저장할 때 사용.

필드를 추가할 때 어떻게 써야하는지 참고.

전에 만들었던 모델에 불린, 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을 돌려보자 오류가 난다

마이그레이션은 돌았다고 하는데, 모델에 반영되지 않은 내용이 있다고 함.

이 필드를 추가한 부분도 지워줘야함.


꼭 코드를 수정하고 전체 저장을 해줘야 함. 안그러면 계속 오류남.

profile
반갑습니다 햄스터 좋아합니다

0개의 댓글