<Exhibitions App>
- 전시회 게시글에 동행 구하기 댓글 붙이기
- 먼저 완성된 이미지를 보여주자면 위와 같다
# exhibitions/admin.py
from django.contrib import admin
from .models import Exhibition
from accompanies.models import Accompany
class AccompanyInline(admin.TabularInline):
model = Accompany
readonly_fields = (
"content",
"user",
"personnel",
"start_time",
"end_time",
)
show_change_link = True
@admin.register(Exhibition)
class ExhibitionAdmin(admin.ModelAdmin):
list_display = [
"category",
"info_name",
"location",
"start_date",
"end_date",
]
list_display_links = ["info_name"]
inlines = [AccompanyInline]
- 일단 이렇게 하면 아래처럼 전시회 게시글에 동행 구하기 댓글도 함께 보인다
- Exhibition 각 글에 Accompany 댓글을 같이 보려면 8번 줄과 같이 AccompanyInlilne 클래스를 만들어야 한다
- 상속받은 admin.TabularInline은 공식 문서를 참고하면 좋다 다른 형태의 인라인도 있다
- 모델은 Accompany로 하면 되고 show_change_link를 True로 한 건 accompany 댓글에 변경 버튼이 생긴다
- readonly_fields를 따로 설정하지 않으면 해당 전시회 페이지에서 accompany 댓글도 수정 가능한데 그렇게 하니 뭔가 조잡한 것 같아 그냥 어떤 댓글이 있는지 볼 수만 있게 하고 수정은 변경 버튼을 클릭해서 거기 들어가서 수정할 수 있게끔 했다
- 20번째 줄에 @로 시작하는 코드는 어드민 페이지에 Exhibition 모델을 등록하는 데코레이터다
- 목록에는 카테고리, 전시회 제목, 장소, 전시 시작 날짜, 종료 날짜가 보이게 설정했고, 전시회 제목을 누르면 편집 페이지로 이동할 수 있게 했다
- 맨 마지막 inlines에 위에서 정의한 AccompanyInline 클래스를 추가하면서 전시회 편집 페이지에 해당 동행 구하기 댓글이 보이도록 했다
- 전시회 글 목록에는 카테고리, 전시회 제목, 장소, 전시 시작 날짜, 종료 날짜가 나오게 했다
<Accompanies App>
- 동행 구하기 댓글에 동행 신청하기 댓글 붙이기
- 원래 동행 구하기 댓글에 신청하기 댓글도 같이 붙기 때문에 전시회 게시글에 신청하기 댓글까지 같이 보이게 하고 싶었는데 인라인에 인라인은 안 된다는 거 같기도 하고 설정할 수 있는 거 같기도 한데 일단 복잡해 보여서 전시회 게시글에는 동행 구하기 댓글만 보이도록 하고 변경 버튼을 눌러서 보이는 페이지에 신청하기 댓글도 보이도록 하고자 한다
- 일단 완성된 그림은 위 이미지와 같다
- 위에 전시회 게시글 페이지에서 동행 구하기 댓글에 변경 버튼을 누르면 여기로 이동한다
- 동행 구하기, 신청하기 댓글은 유저가 직접 작성하는 부분이기 때문에 어드민 페이지에서는 편집이 가능하도록 두는 게 맞나 싶긴 한데 일단 이렇게 두고 나중에 readonly로 바꿀 필요가 있으면 그때 수정해야겠다
# accompanies/admin.py
from django.contrib import admin
from .models import Accompany, Apply
class ApplyInline(admin.TabularInline):
model = Apply
@admin.register(Accompany)
class AccompanyAdmin(admin.ModelAdmin):
list_display = [
"exhibition",
"content",
"user",
"personnel",
"start_time",
"end_time",
]
list_display_links = ["content"]
inlines = [ApplyInline]
- 이것도 위에서 한 거랑 똑같고 readonly_field랑 show_change_link만 없다
- 이 페이지에서는 신청하기 버튼도 수정할 수 있게 되어 있기 때문에 굳이 show_change_link를 True로 할 필요가 없다
- 목록에는 전시회 정보, 내용, 작성자, 동행인원, 모임 시작 시간, 종료 시간이 보이게 했다