Study/django

django admin - raw_id_fields, search_fields problem

bluebamus 2022. 12. 19.

raw_id_fields와 search_fields는 같은 app의 model에 register로 등록되지 않으면

제대로 동작하지 않는다는 문제를 가지고 있다.

 

때문에, override를 통한 작업을 하거나 다른 방법을 사용해야 한다.

 

물론 override는 숙련된 개발자가 아니고서는 어렵다.

 

나 또한 모든 구조를 이해하는 사람이 아니라 판단하기에

보편적이지 않은 override는 좋아하지 않는다.

 

우연하게 관련한 문제들이 버그로 여겨지고 

오랫동안 다뤄져 왔다는 것을 확인하게 되었다.

 

물론 글이 많지는 않다.

 

안쓰고 말지라는 생각이 더 많기 때문이었을거다

아니면 template에서 자체적으로 구현하고 말지라는 생각을 하기도 한다.

 

해결 방법을 간단한 tric을 통해 얻을 수 있는걸 알게 되었고

관련해서 기록을 한다.

 

raw_id_fields와 관련되는 테이블을 동일한 app의 admin에서

등록을 해주면 된다.

 

하지만 이러면 메뉴에 해당 테이블이 등록된다.

 

이를 방지하기 위해 admin을 선언해 준다

예시는 다음과 같다.

 

class ProjectPostHiddenAdmin(admin.ModelAdmin):
    def get_model_perms(self, request): #tric regist
        return {}
    
    
portfolio_admin_site.register(ProjectPost,ProjectPostHiddenAdmin)

portfolio_admin_site는 해당 app의 admin을 별개의 페이지로 분리하는데 사용한 변수명이다.

기존대로 사용해도 무방하다.

 

핵심은 get_model_perms 함수를 등록하되 return {}의 값을 전달하면 된다.

 

구조는 대충 이해는 되지만, 명확한 이해는 못하고 있다.

그리고 다른 사람들과 마찬가지로 여전히 왜 접근을 못하고 가져오지 못하는지

이해가 안된다. 

choice필드로는 자동적으로 접근을 하고 데이터를 가져오는데 말이다.

때문에 나도 이 현상은 버그가 아닌가 싶다.

 

 

댓글