Backend/Django + Bootstrap 개발 일지

    19. 다대다 관계 구현(19 ~ 22) (Tag 모델, 포스트 목록과 상세 페이지에 태그 기능 추가, 태그 페이지 구현 )

    19. 다대다 관계 구현(19 ~ 22) (Tag 모델, 포스트 목록과 상세 페이지에 태그 기능 추가, 태그 페이지 구현 )

    ● Tag 모델 만들기 조악스러운 그림으로 설명 하자면 포스트는 복수의 태그를 가질 수 있고 태그는 복수의 포스트의 가질 수 있다. 즉 포스트든 태그든 복수의 관계를 가질수 있는 말하고 다른말로 여러 요소와 동시에 연결된 관계를 다대다 관계라고 한다. 구현을 할때 django에서는 ManyToManyField를 사용한다. Tag 모델 구현 models.py에 Tag 모델 작성 후 migration 포스트 모델에 tags 필드를 추가하기 위해 ManyToManyField 사용으로 위에서 작성한 Tag 모델을 연결한다. migration 하려고 하면 null은 ManyToManyField에서 효과가 없다고 한다. null을 허용하지 않는다는 뜻인가? 하며 책을 읽어보니 ManyToManyField 에서는 n..

    18. 다대일 관계 구현 (카테고리 기능 2)

    18. 다대일 관계 구현 (카테고리 기능 2)

    post_detail 수정 post_list와 다를바 없이 오른쪽 카테고리 카드에 카테고리 목록과 각각의 카테고리에 포스트가 몇 개인지 소괄호로 표시되게끔 한다. 테스트 코드 수정 필요한 포스트 1,2,3은 setUp() 함수에서 만들어 두었기 때문에 조금만 수정해 준다. 역시나 카테고리 카드를 위한 정보를 views.py의 PostDetail 클래스에서 정의하지 않았기 때문에 programming (1) 을 찾을 수 없다는 오류를 출력한다. get_context_data() 메서드로 category 인자 넘기기 카테고리 카드에 정보를 넘겨주기 위해 views.py 파일을 수정한다. post_list 에 category 관련 인자를 넘긴것과 마찬가지로 주요 코드에 PostDatail로 바꿔준다 templ..

    17. 다대일 관계 구현 (카테고리 기능)

    17. 다대일 관계 구현 (카테고리 기능)

    Category 모델 만들기 포스트 목록과 상세 페이지에 공통적으로 카테고리가 보여야 하며 해당 카테고리를 클릭 할 시 관련된 포스트가 나열되어야 한다. models.py에 Category 모델 만들기 Category 모델에 name, slug 라는 이름의 필드를 만들었으며 unique=True로 동일한 name을 갖는 카테고리를 만들 수 없게 하였다. slug필드는 고유 URL을 만들때 주로 사용하는 것으로 Post 모델처럼 pk를 활용해 URL을 만들 수 있으며 allow_unicode=True로 한글을 지원하도록 한다. Post 모델에 category 필드 추가하고 migration Post 모델에 Category를 ForeignKey로 새로운 필드를 추가한다. 미분류 포스트도 있을 수 있으므로 n..

    16. 다대일 관계 구현(16 ~ 18) (작성자 추가)

    16. 다대일 관계 구현(16 ~ 18) (작성자 추가)

    ● 작성자 추가 Blog project의 다대일 관계 이해 먼저 다대일 관계는 여러 개의 모델이 하나의 모델에 연결되는 관계를 말한다. 예시를 들면 다음과 같다. Post를 기준으로 하나의 Post는 하나의 User, 하나의 Category와 관계를 가진다. 이것이 다대일 관계이다. author 필드에는 어떤 내용이 필요한가? Post 작성시 사용자명을 문자열로 저장하는 내용이 필요할 것이고, 사용자 명을 바꾸거나 삭제되었을시 이를 반영하는 내용도 필요할 것이다. 또한 작성자 하나가 여러 Post를 연결하는 경우 다대일 관계에서는 ForeignKey를 활용해야 할 것이다. ForeignKey로 author 필드 구현 models.py에 author 필드 추가 후 migration Django에서 제공하는..