🤷 기간 : 2021.04.27 ~ 2021.04.27
🤷 자료 : http://pythonstudy.xyz/python/article/308-Django-%EB%AA%A8%EB%8D%B8-Model
🤷 내용: Django model
Django model은 django.db.models.Model 의 파생 클래스이며, model의 field는 class의 attribute로 표현model에서는 각 Django의 App안에 기본적으로 생성되는 models.py 모듈 안에 Class를 정의한다.models.py안에는 하나 이상의 class를 정의 할 수 있다.class는 하나의 table이다.models.py 모듈에서는 여러가지 table을 가질 수 있다.app의 models.py안에는 하나 이상의 class를 정의 할 수 있다.class는 하나의 table이다.models.py 모듈에서는 여러가지 table을 가질 수 있다.
Feedback이라는 class는 modesl.Model에서 파생Class는 talbe이며 / Class Attribute는 table의 column왼다.Class 안 4개의 변수는 (혹은 Class Attribute)/ 4개의 column 이다.model class는 class 변수를 사용한다table의 column meta data를 정의하기 때문에.class 변수는 각각의 field 타입에 맞는 field class 객체를 할당한다.field 타입 class들은 추상클래스인 "Field" class에서 파생된 class들이다.examples
CharField: 제한된 문자열 필드 타입TextField: 대용량 문자열을 갖는 필드IntegerField: 32 비트 정수형 필드.
- 정수 사이즈에 따라 BigIntegerField, - SmallIntegerField 을 사용할 수도 있다.
BooleanField: true/false 필드.
- Null 을 허용하기 위해서는 - NullBooleanField를 사용한다.
DateTimeField: 날짜와 시간을 갖는 필드.
- 날짜만 가질 경우는 DateField, 시간만 가질 경우는 TimeField를 사용한다.
DecimalField: 소숫점을 갖는 decimal 필드BinaryField: 바이너리 데이타를 저장하는 필드FileField: 파일 업로드 필드ImageField: FileField의 파생클래스로서 이미지 파일인지 체크한다.UUIDField: GUID (UUID)를 저장하는 필드참고 사이트 : https://docs.djangoproject.com/en/1.11/ref/models/fields/#field-types
또한, 테이블 간 혹은 필드 간 관계(Relationship)을 표현하기 위해 ForeignKey, ManyToManyField, OneToOneField 클래스를 또한 제공한다 !
참고 사이트:https://docs.djangoproject.com/es/1.11/ref/models/fields/#module-django.db.models.fields.related
example
null (Field.null): null=True 이면, Empty 값을 DB에 NULL로 저장한다. DB에서 Null이 허용된다.
- 예: models.IntegerField(null=True)
blank (Field.blank): blank=False 이면, 필드가 Required 필드 / blank=True 이면, Optional 필드이다.
- 예: models.DateTimeField(blank=True)
primary_key (Field.primary_key): 해당 필드가 Primary Key임을 표시
- 예: models.CharField(max_length=10, primary_key=True)
unique (Field.unique): 해당 필드가 테이블에서 Unique함을 표시, 해당 컬럼에 대해 Unique Index를 생성
- 예: models.IntegerField(unique=True)
default (Field.default): 필드의 디폴트값을 지정한다.
- 예: - models.CharField(max_length=2, default="WA")
db_column (Field.db_column): 컬럼명은 디폴트로 필드명을 사용하는데, 만약 다르게 쓸 경우 지정한다.