0개 이상의 게시글은 1명의 회원에 의해 작성될 수 있다.
0개 이상의 댓글은 1명의 회원에 의해 작성 될 수 있다.
User 외래 키 정의 |
---|
django 프로젝트의 '내부적인 구동 순서'와 '반환 값'에 따른 이유
우리가 기억할 것은 User 모델은 직접 참조하지 않는다는 것 ⭐
현재 활성화된 user객체
함수다. 반환값이 객체다. / user객체가 구동할때 없을 수도 있어서 문자열로 참조하도록 models.py에서는 settings.AUTH_USER_MODEL 사용한다.
반환값이 문자열이다.
- 기본적으로 모든 컬럼은 NOT NULL 제약조건이 있기 때문에 데이터가 없이는 새로운 필드가 추가되지 못함 -> 기본값 설정 필요 |
- 1을 입력하고 Enter 진행(다음 화면에서 직접 기본 값 입력) |
- 추가되는 외래 키 user_id에 어떤 데이터를 넣을 것인지 직접 입력해야 함 |
- 마찬가지로 1 입력하고 Enter 진행 |
- 그러면 기존에 작성된 게시글이 있다면 모두 1번 회원이 작성한 것으로 처리됨 |
- migration 파일 생성 후 migrate 진행 |
- 기존 ArticleForm 출력 변화 확인 |
- User 모델에 대한 외래 키 데이터 입력을 위해 불필요한 input이 출력 |
ArticleForm 출력 필드 수정 |
---|
게시글 작성 시 에러 발생 |
---|
-user_id 필드 데이터가 누락되었기 때문 |
게시글에 작성자가 없다.(현재 로그인한 user가 게시글 저장될 때 들어가야 함) |
게시글 작성 시 작성자 정보가 함께 저장될 수 있도록 save의 commit 옵션 활용 |
---|
게시글 작성 후 테이블 확인 |
---|
각 게시글의 작성자 이름 출력 |
---|
- 게시글 수정 요청 사용자와 게시글 작성 사용자를 비교하여 본인의 게시글만 수정 할 수 있도록 하기 |
- 해당 게시글의 작성자가 아니라면, 수정/삭제 버튼을 출력하지 않도록 하기 |
User 외래 키 정의 |
---|
댓글 작성 시 작성자 정보가 함께 저장될 수 있도록 작성 |
---|
댓글 작성 후 테이블 확인 |
---|
1번 게시글에 2번 user가 댓글 작성함 |
댓글 출력 시 댓글 작성자와 함께 출력 |
---|
- 댓글 삭제 요청 사용자와 댓글 작성 사용자를 비교하여 본인의 댓글만 삭제할 수 있도록 하기 |
- 해당 댓글의 작성자가 아니라면, 댓글 삭제 버튼을 출력하지 않도록 함 |
@login_required
def comments_create(request, pk):
pass
@login_required
def comments_delete(request, article_pk, comment_pk):
pass