Code C - Database 1번 글, 프로젝트 8일차 (월)
- 필드에 blank를 허용할 때
- CharField -> blank=True 하나만
- 나머지 -> blank=True, null=True 두 개가 필요
- 전자는 유효성 검사에서 사용,
- 후자는 DB null 허용 여부 (null=True 가 없을 시 객체 생성 과정에서 null 이 들어오면 페이지 에러 발생)
0.
로그인/아웃 기능 개발을 잠시 중단하고
ORM에 조금 더 익숙해지기 위해 조금 더 단순한 기능을 먼저 구현해보기로 했다.
그것은 바로
>> 주류 가격 정보 공유 <<
1.
주류 가격은 매장마다 천차만별이고 시세가 유동적이기 때문에
가격 정보가 유용하고 귀하다.
오래전 남대문 수입 상가를 중심으로한 가격 정보 공유 구글 시트가 있어 가끔 이용했었으나
몇 년 전부터 더 이상 업데이트되지 않고 있다.
위와 유사하게 가격 정보를 공유할 수 있는 플랫폼을 만든다면,
사람들이 유용하게 이용하지 않을까?
2.
ORM 이 익숙해지면 기존 쿼리문을 작성해서 날리는 방법보다 생산성 면에서 훨씬 좋아질 것 같다.
다만 SQL과 비교해서 사용시간이 절대적으로 부족.
모델 하나 만드는데도 꽤 시간이 걸렸지만,
여러 필드 속성과 PostgreSQL에 대해 많은 공부가 되었다.
또 Django 공식 문서를 읽는데도 점점 더 익숙해지는 게 느껴져서 좋았다.
3.
DrinkPriceInformation 클래스 모델 코드
모델 코드를 마이그레이션 하여 자동 생성된 PostgreSQL의 table
4.
몇 가지 테스트를 해 본 결과.
- Django model의 max_Length= 값은 varchar의 길이 값과 일치한다
- varchar(1) -> 한글 영어 구분 없이 1글자 취급한다. 고로 byte 단위가 아님
- 필드에 blank를 허용할 때
- CharField -> blank=True 하나만
- 나머지 -> blank=True, null=True 두 개가 필요
- 전자는 유효성 검사에서 사용,
- 후자는 DB null 허용 여부 (null=True 가 없을 시 객체 생성 과정에서 null 이 들어오면 페이지 에러 발생)
- DateTimeField -> 별도의 설정 없이도 timestamp 가 with time zome 타입으로 선언
- auto timestamp
- auto_now -> 객체가 업데이트될 때마다 새로 timestamp 기록
- auto_now_add -> 객체가 생성되는 최초 1회만 timestamp 기록
5.
ORM의 매력에 점점 빠져들고 있다.
VO에 ResultSet 잔뜩 담아서 던지던 생각 때문에
객체 == 레코드 개념이 조금 어색하지만.
공식 문서를 살펴보니 쿼리 최적화를 위한 함수도 꽤 있었다.
기능을 몰라서 못쓰는 거지 없어서 못쓰는 경우는 적지 않을까..?
그래도 직접 SQL 구문을 쏘는 방법에 비하면 범용성이 조금 부족할 것 같긴 함.
'프로젝트 > Django - How Dimt?' 카테고리의 다른 글
Django poj.c B6) error) blank input ValueError 해결 - 10일차 (0) | 2022.04.27 |
---|---|
Django poj.c B5 ) 주류가격정보 테이블 구현 / 현재 봉착한 문제 - 9일차 (0) | 2022.04.26 |
Django poj.c B4 ) account 기능 구현 중 - 6일차 (0) | 2022.04.24 |
Django poj.c B3 ) 제로베이스!! - 5일차 (0) | 2022.04.23 |
Django poj.c D0 ) 금요일, 1주차 중간 발표 (+ 감상) - 4일차 (0) | 2022.04.22 |
댓글