Django_11) Many to one relationships 2

지비지비집·2023년 11월 6일
0

Django

목록 보기
11/14
post-thumbnail

우리는 전까지 댓글과 게시글의 N:1관계를 이해하고 구현해보았다. 그렇다면 User와 게시글, User와 댓글의 관계는 어떤지 생각해보자. 0개 이상의 게시글이나 댓글은 1명의 회원에 의해 작성될 수 있다. 마찬가지로 N:1 관계를 가지니 DB에 그 관계를 ForeignKey를 통해 부여하도록 하자.

Article - User 관계 설정

  1. User 외래 키 정의
  • 여기서 주목할 점은 User 모델을 참조하는 방법이다. get_user_model() , settings.AUTH_USER_MODEL 은 어떤 차이가 있을까?

    django 프로젝트의 내부적인 구동 순서 때문에 사용 위치에 따라 다른 방법을 사용하되, 우리가 기억할 것은 User 모델은 직접 참조하지 않는다는 것이 중요하다.
    Model이 바뀌었으므로 Migration을 진행해야하는데, 만약 DB가 애초에 존재했다면 오류가 뜰 것이다. 왜냐하면 이 전에 만들었던 게시글에는 user 필드가 비어있기 때문이다. 이를 해결하기 위해서는 오류 문구를 잘 읽어보고 1을 누른 다음 비어있는 곳에 어떤 값을 채울지 작성해보자.
    게시글 작성을 하면 User를 선택할 수 있는데 이는 불필요한 것이므로 ArticleForm을 수정하자.
  1. ArticleForm 출력 필드 수정(Create)

  2. 게시글 작성 시 작성자 정보도 함께 저장되도록 view 함수 수정(Create)

  3. 각 게시글의 작성자 이름이 나오도록 출력(Read)

  4. 수정 요청 사용자와 작성 사용자가 일치할 때만 수정할 수 있도록 하기(Update)

  5. 삭제 요청 사용자와 작성 사용자가 일치할 때만 삭제할 수 있도록 하기(Delete)

Comment - User 관계 설정

  1. User 외래키 정의

  2. Migration(위와 동일)

  3. 댓글 작성 시 작성자 정보가 함께 저장될 수 있도록 view 함수 수정(Create)

  4. 댓글 출력 시 댓글 작성자와 함께 출력되도록 detail.html 수정(Read)

  5. 삭제 요청 사용자와 작성 사용자가 일치할 때만 삭제할 수 있도록 하기(Delete)

  6. 인증된 사용자만 댓글 작성 및 삭제

profile
"정말 무엇인가를 이해한다면 전문용어를 모르는 사람에게도 설명할 수 있어야 한다." -리처드 파인만-

0개의 댓글