WIL #9 | [Django] model의 필드 타입 & 필드 옵션

신승호·2021년 4월 27일
0

WIL

목록 보기
13/20

🤷 기간 : 2021.04.27 ~ 2021.04.27
🤷 자료 : http://pythonstudy.xyz/python/article/308-Django-%EB%AA%A8%EB%8D%B8-Model
🤷 내용: Django model


what is Model in Django ?

  • 데이타 서비스를 제공하는 Layer
  • Django modeldjango.db.models.Model 의 파생 클래스이며, modelfieldclassattribute로 표현
  • model에서는 각 Django의 App안에 기본적으로 생성되는 models.py 모듈 안에 Class를 정의한다.
    • 각 app의 models.py안에는 하나 이상의 class를 정의 할 수 있다.
    • 하나의 class는 하나의 table이다.
    • 즉, 하나의 models.py 모듈에서는 여러가지 table을 가질 수 있다.

Model(models.py)의 class

  • appmodels.py안에는 하나 이상의 class를 정의 할 수 있다.
    • 하나의 class는 하나의 table이다.
    • 즉, 하나의 models.py 모듈에서는 여러가지 table을 가질 수 있다.
  • models.py의 field는 class의 attribute로 이루어져있다.
  • Feedback이라는 classmodesl.Model에서 파생
  • Classtalbe이며 / Class Attributetablecolumn왼다.
  • Class 안 4개의 변수는 (혹은 Class Attribute)/ 4개의 column 이다.

필드 타입

  • model classclass 변수를 사용한다
    • 왜냐하면, tablecolumn 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

필드 옵션

  • 모델의 필드는 필드 타입에 따라 여러 옵션(혹은 Argument)를 가질 수 있다.

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): 컬럼명은 디폴트로 필드명을 사용하는데, 만약 다르게 쓸 경우 지정한다.
profile
신승홉니다

0개의 댓글

관련 채용 정보