일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- node
- flask
- socket io
- AWS
- TypeScript
- react
- docker
- 파이썬
- 채팅
- EC2
- SSA
- dict
- crud
- pandas
- NeXT
- git
- Vue
- Props
- merge
- MongoDB
- 튜플
- wetube
- RDS
- Class
- lambda
- S3
- SAA
- async
- 카톡
- 중급파이썬
- Today
- Total
초보 개발자
field옵션들, default, choices, blank, null 본문
우리의 데이터가 이미 만개가 있다고 가정하고
새 필드(column)를 추가하려고한다. 이 때 옵션을 주어서 기존에 있던 값에 필드가 생기기 전에 있던 레코드에 데이터를 채워줄 것이다.
여기서 default=""인 것은 값을 ""로 채운 다는 뜻이고, null = True를 주면 기존에 있던 값은 비어있는 채로 있을 것이다
""" """ 이건 docstring이라는 뜻인데 이 클래스가 어떤 역할을 하는지 알려주는 것이다.
User에 마우스를 올려보면 우리가 적은 내용이 표시되는 것을 확인할 수 있다.
또 from . models import User
form . 이건 현재의 파일과 같은 폴더 내에 있는
import models 이건 models를 불러온다. 이뜻이다.
우리는 User 모델에 프로필 사진을 추가할 수 있는 avatar와 성별을 나타내는 gender 필드를 추가할 것이다.
charfield는 max_length를 인자로 받는다.
bio의 textfield는 필수 인자가 없는 것 같다.
ImageField는 필요한 인자가 많은 것 같다.
일단 makemigrations를 해보면 아래와 같은 오류가 뜬다.
ImageField를 사용하기 위해선 Pillow라는 모듈이 필요한 것 같다. 우리는 현재 가상환경 속이니까 pipenv 로 Pillow를 다운받아주자. 그리고 다시 makemigrations를 해보자.
우리는 avatar에 default값없이 만들어서 이러한 경고문이 뜨는 것이다.
avatar에 null=True라고 추가해주고 다시 makemigrations를해주자
그럼 잘 추가가 되었고 migrate까지 진행시켜주자.
admin패널에 가보면 아래와 같이 잘 추가가 된 것을 확인할 수가 있다.
근데 gender에 male female만 들어와야하는데 abcd 이런게 들어올 수가 있다.
따라서 우리는 약간의 커스터마이징을 해주어야한다. choices를 통해서 아래와 같이 나타낼 수 있다.
상수를 만들어서 male female other를 만들고 튜플안에 튜플의 형태로 (데이터베이스에 담길 값, 보여질 값) 이런식으로 적어준다. 그리고 Charfield안에 choices에 그 튜플을 담아준다. 그럼 아래와 같이 나타난다.
이 경우 model을 수정했는데도 makemigrations 및 migrate를 하지 않아도 되었다.
그 이유는 데이터베이스에 직접 영향을 준 것이 아니라 form에 변화를 준 것이기 때문이라고 한다.
빈칸인 상태로 save를 눌러보면 아래와 같이 나온다.
우리는 avatar에 null값 True주었고, bio도 default=''주었고, gender도 null=True를 주었는데 왜 필수라고 나오는 걸까??
데이터는 form(값을 입력)을통해 데이터베이스로 가는 것이다.
따라서 우리가 준 옵션들은 데이터 베이스에 해당하는 옵션이고, ( 데이터 베이스에서 null=True가 적용, default='' )
form에서도 따라 빈칸이어도 된다는 걸 주어야한다. blank라는 옵션을 주어야 하고, 그 옵션은 form에서도 사용 가능하다.
따라서 아래와 같이 form에서 빈칸이어도 괜찮다는 옵션을 주고나서
다시 빈칸인 채로 save를 눌르면 이번엔 잘 되는 것을 확인할 수 있다.
여기서 생일, 통화, 슈퍼호스트 유무인지 아닌지를 확인하는 필드를 추가하고 User model을 마무리해보자.
'Python > airbnb 클론' 카테고리의 다른 글
room model, 다대다 일대다 관계 (0) | 2022.01.23 |
---|---|
User admin패널 활용 및 User Model 완성 (0) | 2022.01.23 |
first django startapp user (0) | 2022.01.20 |
Django app 계획 방법 (0) | 2022.01.19 |
Django first migrate (0) | 2022.01.19 |