db_table을 통해 모델에서 생성한 데이터베이스 테이블의 이름을 변경할 수 있습니다.
db_table = 'bookstore'
db_table 자동 생성과 변경
장고는 앱과 모델 클래스의 이름을 조합하여 데이터베이스 테이블의 이름을 자동으로 생성합니다. 보다 정확하게는 모델의 데이터베이스 테이블 이름은 모델의 "앱 라벨"(python manage.py startapp bookstore
에서 bookstore)과 모델의 클래스 이름을 언더스코어로 조합하여 지정됩니다.
예를 들어, bookstore
라는 앱을 생성했고, class Book
을 모델에서 정의했다고 해보겠습니다. 이 경우 데이터베이스 테이블 이름은 bookstore_book
이 됩니다.
이를 다른 이름으로 변경하려면 class Meta
내에서 db_table
을 재정의할 수 있습니다.
class Meta:
db_table = 'bookstore'
db_table 이름 변경 및 활용 예시
다음과 같이 각 앱에서 구현된 모델이 있다고 해보겠습니다. 이때, dogs 앱의 class Dog
는 class Human
을 FK로 참조합니다. 이 경우, FK 선언 부분에 Human
클래스 내에서 지정된 db_table
이름을 db_tableName.ClassName
형식으로 사용할 수 있습니다.
# humans/models.py
from django.db import models
class Human(models.Model):
email = models.EmailField(max_length=300, unique=True)
age = models.PositiveIntegerField()
name = models.CharField(max_length=45)
class Meta:
db_table = 'humans'
# dogs/models.py
from django.db import models
class Dog(models.Model):
name = models.CharField(max_length=20)
age = models.IntegerField(default=0)
human = models.ForeignKey('humans.Human', on_delete = models.CASCADE) #humans.Human을 통해 데이터베이스 테이블의 Human을 참조
class Meta:
db_table = 'dogs'
반응형
'TIL' 카테고리의 다른 글
장고 모델에서 Q () 연산자 (or) 사용하는 방법 - TIL 7 (0) | 2022.01.18 |
---|---|
파이썬 이메일, 비밀번호, URL 유효성 검사 정규 표현식 - TIL 6 (0) | 2022.01.16 |
데이터 유형과 데이터베이스 종류 - TIL 4 (0) | 2022.01.11 |
파이썬 리스트에서 홀수 제외하기 - TIL 3 (0) | 2022.01.05 |
파이썬 함수와 파라미터 순서 - TIL 2 (0) | 2022.01.03 |