django model에서 테이블명 생성 규칙은 아래와 같다.
appname_classname
테이블명이 이렇게 만들어지면 꼴보기 싫다. 그래서 db_table 옵션으로 커스텀한 테이블명을 만들 수 있다.
본인의 작업 환경 drf, djongo, mongodb 에서 콜렉션명(=테이블명)을 커스텀해 만들려고 했다. 그러나 안 된다. 계속 appname 이 붙어서 생성된다. djongo의 문제인가? 그것도 아닌 것 같고. 그런데 또 커스텀한대로 생성된 콜렉션도 있다. 뭐가 문제인가? 원인은 아주 단순했다.
class Meta 를 선언해 주는데 대소문자 구분을 명확히 해야 한다는 것. META로 썼더니 오류는 안 나고 기능은 동작하지 않았다.
class TableName(models.Model):
_id = models.UUIDField(editable=False)
test = models.CharField(max_length=256) # class META로 쓰면 기능 동작 안함
class Meta:
db_table = "user_table_name"
나도 모르게 계속 META로 타이핑하고 있었다. 진짜 어이없네. 에러를 내 주던가.