본문 바로가기
Always Awake/피로그래밍 12기(19.12.31~20.02.22)

피로그래밍 12기 4주차 활동 정리(20.01.21~20.01.27)

by 욕심많은알파카 2020. 1. 27.

화요일(01.21)

Django Model  관계 by 안성빈 선배님

 

-다대일(ManyToOne Relationship)

한 테이블에 있는 한개 이상의 레코드가 다른 테이블에 있는 하나의 레코드를 참조할 때

ex-고객과 주문(Order)

 

-다대다

한 테이블에 있는 한개 이상의 레코드가 다른 테이블에 있는 하나 이상의 레코드를 참조할 때

다대다의 경우 두 테이블을 참조하는(두 테이블의 foreign-key를 모두 가지고있는) 테이블을 새로 생성한다.

만약 두 테이블 사이에 낀 매개 테이블에 속성을 집어넣고 싶다면 through를 사용해 두개의 테이블을 foreign key로 삼는 테이블을 명시적으로 생성해주면 된다.

ex-포스팅과 태그

 

 

-일대일

한 테이블에 있는 한개의 레코드가 다른 테이블에 이는 한 개의 레코드와 대응될 때 

ex- 유저와 프로필

 

 

-null=True와 blank=True의 차이

null=True : 입력값이 빈 문자열이면 DB에 null로 저장된다.

blank=True : 입력값이 없으면 DB에 빈 문자열로 저장된다.

 

Django convention으로 문자열 필드에는 null=True 대신 blank=True 옵션을 추천하고있다.

DB에서 해당 정보가 없음을 뜻하는 상태는 NULL 밖에 없지만, Django는 문자열 필드에 한하여 ''(빈문자열)을 NULL상태와 동일시하고있다. 이 때 동일한 ‘값이 없는 상태’에 대하여 굳이 ’’(빈문자열)과 null값 두개의 서로 다른 형태로 표현할 필요가 없기 때문에, 관습적으로 문자열 필드에는 blank=True옵션을 넣는다.

 

 

 

목요일(01.23)

Django CRUD 심화 by 홍지형 선배님

 

-settings.py의 템플릿 설정

DIRS : [os.path.join(BASE_DIR-최상위폴더-, ‘프로젝트폴더’, ‘templates’]

 

이렇게 설정해두면 BASE_DIR/프로젝트폴더/templates위치를 finder가 인식한다.

만약 templates위치를 최상위 폴더 아래에 두었다면 join(인자) 인자부분에 BASE_DIR, ’templates’만 넣으면 된다.

 

-related_name과 verbose_name의 차이점

 

verbose_name : 해당 필드에 붙여주는 네임, 별명 같은것. 지정해주면 admin창에서 해당 필드에 필드명 대신 붙어서 나온다.

 

related_name :  foreignkey 지정하는 테이블(, 참조하는 테이블) 붙이는 이름. 만약 related_name 정하지 않는다면 foreignkey 지정된 테이블(, 참조된 테이블)에서 지정하는 테이블에 접근할 <참조된 모델명>.<참조한 모델명_set>.함수() 사용해야한다.

 

 

4주차에도 내용이 썩 많지 않다.

아무래도 설 연휴도 끼어있고, Django의 기본적인 내용들을 한번에 이해하기 어렵기 때문에 반복학습위주로 강의를 하기 때문인 듯 하다. 다행인 점은 몇 번씩이나 같은 과정을 반복하다 보니 MTV패턴과 Django의 기본적인 구성에 대해 조금이나마 감을 잡게 되었다는 것이다. 5주차를 넘기고 나면 팀프로젝트가 시작될 것이고 그 때부터는 원하는 서비스를 구현하기 위해서 직접 새로운 부분들을 찾아서 공부해야 할 텐데, 그때부터 다시 포스팅 할 것이 많아질 듯하다.

댓글