헤옹스 2021. 12. 6. 11:24
  1. 추상 클래스 - DB 테이블 만들지 않는 기본 모델 클래스.

     python manage.py startapp core

    Core Model

    • created_at(auto_add)

    • updated_at(auto_add)

      class Meta:

      abstract=True

  2. Core Model

    • DateField - auto_now_add

      : 객체가 처음 생성될 때 자동으로 현재시각이 필드 값이 되도록 함.

    • DateField - auto_add

      : 객체가 저장될 때마다 자동으로 현재 시각이 필드 값이 되도록 함.

      ⇒ created_at, updated_at

  1. class Meta:

    • ordering : 기본 정렬 결정
    • db_table : 테이블의 이름을 결정
    • verbose_name : 사용자를 위한 이름 결정
  2. IntegerField - 정수저장

    FloatField - 소수(float값 저장)

    ImageField - 이미지 파일 저장 ⇒ pillow 라이브러리 필요

  1. 모델들 간의 관계

    • 다대다 : ForeignKey
      • ManyToMany Field 필드
    • 일대일 : OneToOneField 필드
  2. on_delete : ForeignKey 필드가 바라보는 객체가 삭제될 때 본 객체를 어떻게 할 것인지 결정.

    on_delete=models.SET_NULL

    // Foreign 필드가 바라보는 객체가 삭제될 때 본 객체에 null 값을 할당함.

    null=True

    on_delete=models.CASCADE

    // Foreign 필드가 바라보는 객체가 삭제될 때 본 객체 또한 삭제.

  1. ForeignKey 필드

    • related_name : ForeignKey 필드가 바라보는 객체에서 본 객체를 역으로 참조할 때 사용하는 이름.

        category = models.ForeignKey(..., related_name="books")
        category = Category.objects.get(id=1)
        category.books.all()

      ManyToManField에서 related_name 옵션과 같은 역할.

  2. ManyToManyField - 다대다 관계에서 사용하는 ForeignKey 필드

      // related_name 옵션 : 역참조 

    OneToOneField - 일대일 관계에서 사용하는 ForeignKey 필드

    books = models.ManyToManyField("books.Book", related_name="fav_lists")

    // 모델명 필요

    created_by = models.OneToOneField("users.User", on_delete=models.CASCADE)

  1. admin.register 데코레이터

    : 모델 클래스들을 어드민 패널에 등록시키기 위해 Model Admin 클래스를 감쌈.

  • list_display
  • list_filter : 사이드 바에 보일 필드 결정