티스토리 뷰

Python/Django

[Django]필드 타입

Vagabund.Gni 2023. 4. 17. 20:12
728x90
반응형

목차

     

    Django를 사용해 모델을 만들고 이를 테이블과 매핑할 땐 타입이 중요하다.

     

    스프링부트에서도 여러 가지 타입을 지원했듯이, 장고도 마찬가지로 많은 타입을 지원한다.

     

    그중에서 많이 사용하(ㄴ다고 하)는 타입들에 대해 짧게 정리하자.

     

    CharField

     

    짧은 문자열은 저장하는 필드 타입. max_length 매개변수로 길이를 지정할 수 있다.

     

    최대 255까지 지원하며, 255를 넘어서는 순간 아래의 TextField로 변환된다.

     

    TextField

     

    긴 문자열을 저장할 때 사용한다. 길이의 제한이 없다.

     

    IntegerField

     

    정수 값을 저장할 때 사용한다. max_value, min_value로 값의 범위를 지정할 수 있으며

     

    32비트 부호 정수인 Integer값을 저장할 수 있다.

     

    이보다 큰 값의 경우 BigIntegerField를 사용할 수 있으며, 양수만 저장한다면 PositiveIntegerField를 사용할 수 있다.

     

    FloatField

     

    부동소수점을 저장할 때 사용된다.

     

    BooleanField

     

    True/False 값을 저장할 때 사용한다.

     

    DateTimeField

     

    날짜와 시간을 저장할 때 사용한다.

     

    DateField

     

    날짜 값만을 저장할 때 사용한다.

     

    TimeField

     

    시간 값을 저장할 때 사용한다.

     

    EmailField

     

    이메일 주소를 저장할 때 사용한다.

     

    형식에 맞지 않는 값은 저장되지 않는다.

     

    URLField

     

    URL을 저장할 때 사용한다.

     

    역시 형식에 맞지 않으면 저장되지 않는다.

     

    FileField

     

    파일을 저장할 때 사용한다.

     

    upload_to 매개변수를 사용해 업로드 경로를 지정할 수 있다.

     

    ImageField

     

    이미지를 저장할 때 사용하는 필드이다.

     

    마찬가지로 upload_to 매개변수를 통해 경로를 지정할 수 있다.

     

    이미지 파일이 아니면 저장되지 않는다.

     

    동영상 파일의 경우 기본적으로 대용량 파일을 다루기 위해 'FileField'를 기반으로 하지만

     

    동영상 처리를 위한 패키지나 전용 라이브러리 사용이 권장된다고 한다.

     

    ForeinField

     

    보통 1:N 관계에서 1의 기본키를 N의 외래키로 저장할 때 쓰인다.

     

    장고의 테이블 간 관계는 이렇게 필드 타입으로 맺어주는 것 같다.

     

    첫 번째 매개변수로 모델을 넣어주어야 하며, 필수 속성으로

     

    on_delete=models.CASCADE

    on_delete=models.PROTECT

     

    등이 있다.

     

    OneToOneField

     

    1:1 관계를 저장할 때 사용된다.

     

    위와 마찬가지로 연결할 모델과 on_delete를 지정해주어야 한다.

     

    ManyToManyField

     

    N:M 관계를 저장할 때 사용된다.

     

    이 필드를 선언하면 장고 내부적으로 중간 모델을 사용해서 두 개의 1:N 관계를 구현하며,

     

    스프링부트에서처럼 개발자가 직접 두 개의 1:N 관계와 중간 테이블을 만들지 않아도 된다.

     

    아무래도 의심이 가서 조금 더 알아봤으나, 장고 ORM은 다대다 관계 처리에 최적화되어 있기 때문에

     

    직접 구현할 필요는 없다는 모양이다.

    반응형
    댓글
    공지사항
    최근에 올라온 글
    최근에 달린 댓글
    Total
    Today
    Yesterday
    링크
    «   2024/05   »
    1 2 3 4
    5 6 7 8 9 10 11
    12 13 14 15 16 17 18
    19 20 21 22 23 24 25
    26 27 28 29 30 31
    글 보관함