본문 바로가기
프로젝트/Django - How Dimt?

Django poj.c C1 ) ORM/ 주류가격정보 model/ 마이그레이션 - 8일차

by Fola 2022. 4. 25.

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 클래스 모델 코드

 

(캡쳐) 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 구문을 쏘는 방법에 비하면 범용성이 조금 부족할 것 같긴 함.

 

 

 

 

댓글