Django


  1. Join
  • 연관된 테이블을 묶어서 내가 원하는 데이터를 한번에 조회할 수 있다.

  • ModelName.objects.all().order_by(…) 와 ModelName.objects.all().select_related().order_by(…) 의 차이 : foreignkey로 종속되어있는 model이 참조당하는 모델의 데이터까지 모두 가져온다. 한번에 가져오기 때문에 쿼리 히트가 한 번만 발생한다.

  • annotate(name = aggregation) : model에서 정의하지 않은 field라도, annotate로 새로운 이름을 지정할 수 있다. template에서 이 이름으로 데이터의 aggregation 결과를 가져올 수 있다. 또한, annotate는 연속적으로 쓸 수 있다. ex) annotate().annotate()…

  • foreignkey를 쓰면 참조하는 모델뿐 아니라 참조 당하는 모델에서도 relation_name이 생성된다. (소문자로)

  • 이미 데이터가 생성되어 있는 기존 모델에 새로운 필드를 생성할 때 : default=None, null=True 옵션을 붙인다. 기존 데이터는 해당 필드에 대한 정보가 없기때문에 값을 넣어줘야 한다. default를 Null 로 넣어주려면, null=True 옵션도 같이 넣어줘야 하고, default가 Null이 아니라면 굳이 넣지 않아도 된다.


  1. Model
  • ABC 클래스

  • multitable 상속

  • proxy model

※ 참고 : Model 총 정리 -브런치


Django 스터디 - Model

  • 발표자 Model에 대해 설명한 내용을 토대로, Model을 만드는 실습 진행.

  • 각자의 관심사에 대해 얘기하고, 그와 관련된 사이트 구현에 필요한 모델 디자인

  • 모델에 필요한 필드들을 나열해보고, 그중 가장 재밌을 것 같은 게임 질문 게시판 모델을 골라 다같이 실습

  • 그리고 연습한 내용을 토대로 각자의 모델을 만들었다.

190314 Django 스터디


190314-django

+ Makemigrations에서 에러가 나 rollback을 하려했는데 실행이 되지 않았다.

+ 조회, 추천수를 나타낼 수 있는 두번째 모델을 만들어 봐야겠다.

추가로 할 것 : Rollback 및 조회, 추천수 구현

다음에 할 것 : View

랜덤 팀 배정 프로그램 실행 파일로 만들기


  • pip install pyinstaller

  • pyinstaller -F 파이썬파일명.py

  • 에러가 난다면 cmd에 파일을 드래그 앤 드랍해서 실행시키면, 에러 메시지를 확인할 수 있다.

+ GUI로 만들고 싶은데… 전에 만들려고 했을 때 복잡했던 것 같아 고민된다. 제 시간에 만들 수 있을지. (+ 다음 날 밤 새서 만들었다.)