Django Admin 페이지에 상품 검색 기능에 Choices Field를 넣고 싶었습니다.
제목으로 검색하고 싶거나,, 작성자 이름으로 검색하거나,
검색 주제를 정하고 검색하는 기능을 바랬습니다.
아래 두개를 합친 결과를 말이죠
하지만
Django Admin에서는 불가능합니다.
StackOverflow를 다 뒤져본 결과, 돌아온 답변은
"너는 Django Admin에게 너무 많은 것을 바란다.."
시간이 없던 저는 어쩔 수 없이 차선책을 선택했습니다.
상품 제목으로 검색을 하고 싶으면 "title:상품제목"으로
상품 제작자 이메일로 검색을 하고 싶으면 "email:이메일주소"로
django admin의 검색창에 검색을 하게 되면, 내부적으로 아래의 함수가 호출됩니다.
get_search_results(self, request, queryset, search_term)
이 함수를 override해서 자기 입맛대로 커스터마이징 할 수 있었습니다!
결과 코드는 아래와 같습니다.
위 메소드를 해당 모델의 admin에 작성해주면
title:hoit -> 상품 제목에 hoit을 대소문자 상관없이 포함하고 있다면 이를 검색 결과로!
email:hoit -> 창작자 이메일에 hoit을 대소문자 상관없이 포함하고 있다면 이를 검색 결과로!
hoit -> 상품 제목이나 창작자 이메일 상관없이 hoit을 대소문자 상관없이 포함하고 있다면 이를 검색 결과로!