당신은 멋쟁이, 우리는 장고쟁이~

0%

Django Models 11편 - Fields (Field name restrictions)

Models - Fields(Field Name Restrictions)


Field name restrictions


Django 는 모델 필드 이름들에 대한 제약이 있습니다.


  1. 필드명은 파이썬 예약어들이 될수 없습니다. 만약 사용한다면, 파이썬 문법 에러를 발생 시킵니다.


    1
    2
    3
    4
    5
    class Example(models.Model):
    pass = models.IntegerField()

    # pass 는 파이썬에서 reversed word (예약어) 입니다
    # 따라서, 모델의 필드명이 될수 없습니다

  1. 필드명은 하나 이상의 언더스코어를 사용할수 없습니다. Django 의 쿼리 조회문이 언더스코어를 2개 사용하기 때문에, 필드명은, __ 를 가질수 없습니다.

    1
    2
    3
    4
    class Example(models.Model):
    foo__bar = models.IntegerField()

    # foo__bar 는 언더스코어 2개를 가지고 있습니다. 잘못된 필드명입니다.

  1. 비슷한 이유로, 언더스코어로 끝나면 안됩니다. 쿼리 구문과 겹치기 때문입니다

    1
    2
    3
    4
    class Example(models.Model):
    foobar_ = models.InegerField()

    # foobar_ 처럼 언더스코어로 끝나는 필드명은 사용하면 안됩니다.


하지만, 이런 제약들은 유도리 있게 잘 사용될수 있습니다. 필드명은 데이터베이스 컬럼명과 꼭 같지 않아도 되기 때문입니다.


join, where 혹은 select 같은 SQL 예약어들은 모델 필드명에 사용해도 됩니다.


Django 는 모든 SQL 쿼리 기반에서의 데이터베이스 테이블 이름들과 컬럼명들에서 자유롭습니다.