동일한 모델에 대해 둘 이상의 ModelAdmin을 작성하고 각각 다른 방식으로 사용자 정의하고 다른 URL에 링크하려면 어떻게해야합니까?
Posts라는 Django 모델이 있다고 가정 해 봅시다. 기본적으로이 모델의 관리자보기에는 모든 Post 객체가 나열됩니다.
list_display와 같은 변수를 설정하거나 queryset
ModelAdmin 에서 메소드를 재정 의하여 다양한 방법으로 페이지에 표시되는 객체 목록을 사용자 정의 할 수 있다는 것을 알고 있습니다 .
class MyPostAdmin(admin.ModelAdmin):
list_display = ('title', 'pub_date')
def queryset(self, request):
request_user = request.user
return Post.objects.filter(author=request_user)
admin.site.register(MyPostAdmin, Post)
기본적으로 URL에서 액세스 할 수 있습니다 /admin/myapp/post
. 그러나 동일한 모델의 여러보기 / ModelAdmins를 갖고 싶습니다. 예를 들어 /admin/myapp/post
모든 게시물 개체를 /admin/myapp/myposts
나열하고 사용자에게 속한 /admin/myapp/draftpost
모든 게시물을 나열하고 아직 게시되지 않은 모든 게시물을 나열 할 수 있습니다. (이것은 단지 예일 뿐이며 실제 사용 사례는 더 복잡합니다)
동일한 모델에 대해 둘 이상의 ModelAdmin을 등록 할 수 없습니다 (이로 인해 AlreadyRegistered
예외 가 발생 함). 이상적으로는 모든 것을 단일 ModelAdmin 클래스에 넣고 URL에 따라 다른 쿼리 세트를 반환하기 위해 내 'urls'함수를 작성 하지 않고 이를 달성하고 싶습니다 .
Django 소스를 살펴본 결과 ModelAdmin.changelist_view
urls.py에 어떻게 든 포함될 수있는 기능 이 있지만 어떻게 작동하는지 확실하지 않습니다.
업데이트 : 원하는 것을 수행하는 한 가지 방법을 찾았지만 (아래 참조) 여전히 다른 방법을 듣고 싶습니다.