django admin custom
- 프로젝트를 진행하던 중
contact 모델의 admin 페이지
에서 request response 모델의 admin 페이지로 넘어가는
기능을 구현하게 되었다.
- 모델의 구조는 아래와 같다.
class Contact(BaseModel):
...
class RequestResponse(BaseModel):
contact = models.ForeignKey("contact.Contact", verbose_name="컨택", on_delete=models.CASCADE)
...
해결방법
from django.contrib import admin
from django.urls import reverse
from django.utils.safestring import mark_safe
@admin.register(Contact)
class ContactAdmin(admin.ModelAdmin):
list_display = ["get_name", "project_name", "phone", "email", "created", "status_link"]
list_display_links = ["project_name", "status_link"]
list_filter = ["user__name", "status", "is_auto_rejected"]
search_fields = ["user__name"]
@admin.display(description="회사명")
def get_name(self, obj):
if obj.user:
return obj.user.name
def status_link(self, obj):
if obj.requestresponse:
url = reverse("admin:contact_requestresponse_change", args=[obj.requestresponse.id])
link = '<a href="%s">%s</a>' % (url, obj.requestresponse.opinion)
return mark_safe(link)
status_link.short_description = "상태"
empty_value_display = "의뢰자"