Django - CRUD_assignment

do yeon kim·2022년 7월 7일
0

Assignment 정리

models.py에서 ForeignKey에 대해서 참조테이블을 적는 방법
  • 경로자체를 넣어주는 경우
  • 다른 모듈에서 import 한 경우는 import후 클래스명
  • "클래스명" 또는 클래스명(앞에 선언했을 경우)



한번 정의된 모델에서 새로운 컬럼을 추가할 때 생기는 문제

프로젝트 중간에 새로운 모델의 컬럼을 추가하는 것은 좋지 않다.
하지만 경우에 따라서는 새로운 컬럼을 추가해야하는 경우가 발생할 수 있다.
새로운 컬럼을 추가하게 되면, 이전까지 있던 자료에 새로생긴 컬럼에 대한 자료도 넣어주어야지 오류가 발생하지 않는다.

컬럼을 추가하는 방법

  • models.py를 수정한 후 각 행에 새로운 데이터 추가
  • 새로운 테이블을 만들어서 참조하는 형태로 구현하기
  • 새롭게 데이터 모델을 만들기(단 대량의 데이터가 들어있는 상황에서는 불가능)



참고

코드작성시 어떤 목적으로 작성하는지 정의 후에 구현하는 것이 좋다.
단순한 것부터 구현해서 조금씩 살을 붙혀나가는 식의 구현이 좋다.

외래키를 참조시 데이터를 get할때 pk를 사용하는 것이 중복된 값에 대한 오류를 없앨수 있다.



예외처리

키에대한 예외처리 - KeyError (키)
데이터에 대한 예외처리 - NotFoundError (get)



정참조 & 역참조

Owner테이블 과 Dog테이블의 관계 설명

Dog테이블은 Owner테이블을 참조하고 있다.
Dog테이블은 Owner테이블에 대한 외래키를 가지고 있다.
그러므로 Dog테이블에서는 Owner테이블에 접근 할 수 있다.

Dog입장에서 Owner에 대한 정보를 가지고 있으므로 정참조로 가지고 올수 있다.
Owner입자에서 Dog에 대한 정보는 가지고 있지 않으므로 역참조로 가지고 올 수 있다.

dog_set(역참조) - 역참조는 object처럼 매니저클래스이다.



models.ManyToManyField

ManyToManyField 경우는 중간에 테이블을 장고에서 자동으로 만들어 준다.

ManyToManyField(through=중간테이블)

테이블에는 생성되지 않는다.

0개의 댓글