manage.py startapp feedback: feedback이라는 새 Django App을 생성하였다.
위 그림에서 Feedback이라는 클래스가 models.Model의 파생 클래스이며, 그 클래스 안에 4개의 클래스 변수 (혹은 Class Attribute)가 있음을 볼 수 있다.
모델 클래스는 필드를 정의하기 위해 인스턴스 변수가 아닌 클래스 변수를 사용한다. 그 변수가 테이블 컬럼의 내용을 갖는 것이 아니라, 테이블의 컬럼 (메타데이터?)를 정의하는 것이다.
필드를 정의하는 각각의 클래스 변수는:
ex)models.CharField(), models,IntegerField(), models.DateTimeField(), models.TextField() 등의 각 필드 타입에 맞는 Field 클래스 객체를 생성하여 할당한다.
그리고 생성자 호출시 필요한 옵션들을 지정할 수 있다. 각 Field 클래스마다 반드시 지정해 주어야 하는 옵션이 있을 수 있는데; CharField 는 필드의 최대 길이를 나타내는 max_length를 지정해주어야 한다.
ex) name = models.CharField(max_length=100) 에서 name이라는 class Attribute는 맥스길이 100을 못 넘는다.
모델의 필드는 필드 타입에 따라 여러 옵션(혹은 Argument)를 가질 수 있다. 예를 들어, CharField는 문자열 최대 길이를 의미하는 max_length라는 옵션을 갖는다.