범위 : #1-24 Registering the Models in the admin ~ #1-25 Customizing the Django Admin
Django에는 어드민 패널이 따로 존재한다.
관리자가 쉽게 정보들을 수정, 추가, 삭제할 수 있게 하기 위함인데 이게 정말 유용하다.
먼저 이 페이지를 수정하기 위해서는 admin.py를 수정해야한다.
admin.py를 열고 최상단에 현재 앱의 모델을 추가해준다.
그다음 모델들을 위한 클래스를 작성한다.
models.py에 Image, Like, Comment 총 3개의 모델이 있으므로 해당 모델들을 위한
클래스를 작성하였다. (admin.ModelAdmin을 상속받아야함)
그리고 decorator를 사용하여 등록시켜준다.
저장하고 어드민 패널로 들어가보면 위처럼 우리가 작성한 3가지가 등록된 걸 알 수 있다.
여기서 Images로 들어가서 이미지를 하나 등록한 후 내용을 보면 아래와 같다.
이처럼 Image object라고만 나오기 때문에 상세한 정보를 한눈에 알아보기 힘들다.
이 부분은 models.py에 def __str__ 매직메소드를 정의함으로써 해결할 수 있다.
다음과 같이 모델쪽에서 __str__을 추가해준다.
위처럼 location과 caption을 return하도록 만들어줬다.
저장하고 다시 어드민 패널로 들어가보면,
알기 쉽게 우리가 수정한 내용이 출력되는것을 확인할 수 있다.
이제 Like모델의 경우도 추가해줘야 하는데 좋아요는 특별한 내용이 없다.
따라서 유저 네임을 출력해주도록 하자.
먼저 Like모델은 다음과 같이 생겼다.
image = models.ForeignKey(Image, on_delete=models.CASCADE, null=True)
여기서 creator가 FK로써 User모델을 가르키고 있다.
따라서 creator.username 을 통해 유저의 이름에 접근할 수 있다.
다음과 같이 내용을 추가해준다.
다시 admin.py의 내용으로 돌아와서, 이제 특정 내용을 클릭했을때, 예를 들어 Comment의 내용을 확인했을때
현재는 COMMENT하나의 값만 보여주고 있다.
이를 수정하려면 list_display값을 추가해주면 된다.
이렇게 list_display에 원하는 필드의 이름을 추가해주고 다시 들어가보면
위처럼 추가해준 모든 내용이 출력된다.
Image필드의 경우 file필드라서 클릭하면 바로 파일로 넘어간다.
만약 클릭을 했을 때 이미지를 수정하는 경우를 만들고 싶다면 list_display_links를 통해 링크를 지정할 수 있다.
)
또한 search_fields를 추가함으로써 검색도 할 수 있다.
위처럼 작성하고 어드민 패널을 들어가보면
이렇게 상단에 검색할 수 있는 칸이 생겼다.
현재는 location만 입력했으므로 location기준으로 검색을 한다.
마찬가지로 list_filter라는것도 존재한다.
위와 같이 입력하고 어드민 패널을 들어가보면
오른쪽에 이렇게 필터가 생겼다.
'Coding > Python' 카테고리의 다른 글
Django Getting User Feed 정리 (0) | 2018.04.22 |
---|---|
Django Restframework 정리 (0) | 2018.04.20 |
Django Model 정리 (0) | 2018.04.19 |
Django Custom User Model 만드는 방법 (0) | 2018.04.18 |
Django pipenv로 가상환경 구축 (0) | 2018.04.18 |