본문 바로가기

개발/장고

[해설과 함께 읽는 Django 문서] Models - Automatic primary key 필드

반응형
Models_3_automatic_primary_key_field

Automatic primary key 필드

기본적으로 장고는 각각 모델에 아래 필드를 준다.

이것은 자동 증가하는 primary key 이다.

만약 당신이 custom primary key 설정을 원한다면, primary=True 를 당신의 필드에 설정해주어야 한다

만약 장고가 명시적으로 Field.primary_key 를 당신이 세팅한 것을 알게된다면, 이것은 자동으로 생성되는 id 컬럼을 추가하지 않을 것이다.

각각 모델은 primary_key=True 를 가진 필드가 정확하게 1개 이길 요구한다.(명시적으로 선언 하거나, 자동적으로 생성되거나 둘중에 하나)


내 마음대로 해설

위의 내용은 간단하다

1.각 모델 마다 pk는 자동 생성된다.(id)

2.만약에 명시적으로 지정해주고 싶으면 primary_key=True 를 붙여줘라

 

1, 2번 각각을 아래와 같이 확인해 볼 수 있다.


1.Model에 id가 없는 경우 자동 생성됨

위와 같은 모델이 있을 때, migration을 생성한 이후에, python manage.py sqlmigrate [앱] [migration 번호] 를 치면, 아래 와 같이 쿼리가 발생한다.

위에서 보다 시피, 모델 상에선 id 가 없지만, 생성 쿼리 내에는 id 가 pk 로 지정된 것을 확인할 수 있다.

 

2.primary_key=True 로 명시해준 경우, 해당 필드가 PK가 됨

phone_number 필드에 primary_key 를 추가하고 True로 세팅

위와 같이 python manage.py sqlmigrate [앱] [migration 번호] 를 치면, 아래 와 같이 쿼리가 발생한다.

위 쿼리와 달리 phone_nubmer 에 PK가 지정된 것을 확인할 수 있다.

 

 

 

반응형