TIL 웹개발 - Django의 cleaned_data 활용
모델 폼을을 사용해 값을 받은 후 그 값을 다시 반환하거나 사용할때 cleaned_data를 사용할 수 있다. 팀프로젝트에서 해시태그 기능을 만들때 cleaned_data를 사용해 중계테이블의 값을 가져왔다. 해시태그와 아티클의 모델을 만들고 아티클에 해시태그를 M:N 필드로 가져와 article_hashtag 중계테이블을 만든 상태다. 모델폼은 만드는데 hashtags를 상속받지 않고 오버라이딩한다. 이유는, 상속받아 폼에 적용하면 hashtag테이블에 생성된 것 중 선택하는 양식으로 나오기 때문이다. 보통 해시태그는 선택이 아니라 직접 작성하기 때문에 위 코드처럼 오버라이딩해서 Textfield로 지정한다. views.py 에서는 모델폼을 사용해 값을 입력받는 로직이다. 하지만 form이 만들어지고 save를 했다고 해도 article_hashtags 중계 테이블에는 데이터가 저장되지 않는다. 이때 form의 cleaned_data 요소를 사용해 hashtag값을 반환해 따로 저장한다. form.is_valid()를 통해 유효성 검사를 통과화면 cleaned_data 딕셔너리가 생성되고 데이터가 cleaned_data 딕셔너리에 추가된다. 각 필드의 이름이 딕셔너리의 키(key)가 되고 입력한 내용이 값(value)로 저장된다. 만약 내가 아티클을 아래와 같이 작성하고, 타이틀: 아이폰 신상 공개 내용: 아이폰이 새로나왔어요! 해시태그: 아이폰 if form.is_valid()를 지나 해시태그 내용응 반환하고 다시 해시태그 테이블에서 그 값으로 중계테이블에 추가한다.
- 서경태