(TIL) CLASS TABLE

On a regular basis·2021년 4월 26일
0
post-thumbnail

class Person1(models.Model):
    name = models.TextField()
    gender = models.CharField(max_length=2)
    birth = models.DateTimeField(auto_now_add=True)

    class Meta:
        db_table = "person"
        
# class 이름은 대문자!
# models.Model은 불변이라고 보면됨!
# 글자 길이에 대한 제약없으면 TextField()
# 글자 길이에 대한 제약있으면 CharField(max..)
# DateTimeField는 날짜에 대한 데이터타입, auto_now_add=True라고 입력하면 최초 작성일로 입력됨


class Student1(models.Model):
    person = models.ForeignKey('Person1', on_delete=models.CASCADE)

    class Meta:
        db_table = "student"

# ForeignKey('클래스명', person1삭제되면, 나도 삭제됨.)
# on_delete = models.SET_NULL

class major1(models.Model):
    name = models.TextField()
    student1_set = models.ManyToManyField('Student1')
 
    class Meta:
        db_table = "major"

# TextField()할 때, () 빼먹지 않기!
# student와 major테이블 연결하기 (Many to Many임.)
# student1_set <- 요게 연결시키는 명령어임.
# 이때, 앞에는 컬럼명, 뒤에는 class 명으로 넣어주면됨.

* 기억해두기

  • Field Type
  1. CharField
    제한된 문자열 필드 타입. 최대 길이를 max_length 옵션에 지정해야 한다. 문자열의 특별한 용도에 따라 CharField의 파생클래스로서, 이메일 주소를 체크를 하는 EmailField, IP 주소를 체크를 하는 GenericIPAddressField, 콤마로 정수를 분리한 CommaSeparatedIntegerField, 특정 폴더의 파일 패스를 표현하는 FilePathField, URL을 표현하는 URLField 등이 있다.
  2. TextField
    대용량 문자열을 갖는 필드
  3. IntegerField
    32 비트 정수형 필드. 정수 사이즈에 따라 BigIntegerField, SmallIntegerField 을 사용할 수도 있다.
  4. BooleanField
    true/false 필드. Null 을 허용하기 위해서는 NullBooleanField를 사용한다.
  5. DateTimeField
    날짜와 시간을 갖는 필드. 날짜만 가질 경우는 DateField, 시간만 가질 경우는 TimeField를 사용한다.
  6. DecimalField
    소숫점을 갖는 decimal 필드
  7. BinaryField
    바이너리 데이타를 저장하는 필드
  8. FileField
    파일 업로드 필드
    ImageField FileField의 파생클래스로서 이미지 파일인지 체크한다.
  9. UUIDField
    GUID (UUID)를 저장하는 필드
  • 필드옵션
  1. null (Field.null)
    null=True 이면, Empty 값을 DB에 NULL로 저장한다. DB에서 Null이 허용된다. 예: models.IntegerField(null=True)
  2. blank (Field.blank)
    blank=False 이면, 필드가 Required 필드이다. blank=True 이면, Optional 필드이다. 예: models.DateTimeField(blank=True)
  3. primary_key (Field.primary_key) 해당 필드가 Primary Key임을 표시한다. 예: models.CharField(max_length=10, primary_key=True)
  4. unique (Field.unique)
    해당 필드가 테이블에서 Unique함을 표시한다. 해당 컬럼에 대해 Unique Index를 생성한다. 예: 5. models.IntegerField(unique=True)
  5. default (Field.default) 필드의 디폴트값을 지정한다. 예: models.CharField(max_length=2, default="WA")
  6. db_column (Field.db_column) 컬럼명은 디폴트로 필드명을 사용하는데, 만약 다르게 쓸 경우 지정한다.
profile
개발 기록

0개의 댓글