2014-09-09 5 views
0

Django 관리자 인터페이스를 수정하고 싶습니다. (예 : "변경"링크를 제거하고 모델 이름을 인스턴스 변경 페이지 링크로 남겨 둡니다.) admin 응용 프로그램에서 index.html을 복사하여 붙여 넣기하여이 작업을 수행 할 수 있지만 템플릿을 수정하여 문제를 해결할 수는 있지만 템플릿을 확장하여 문제의 섹션을 재정의하는 것을 선호합니다. 그러나이 작업을 템플릿으로 구현하는 방법을 잘 모르겠습니다. 같은 이름을 지어 라. 나는 또한이 효과를 얻는 다른 방법에 대해서도 열려있다. (django 1.7, python 3.4.1)Django Extend admin index

답변

3

해결했습니다. admin.py에 admin.site.index_template = "my_index.html"을 설정했는데, my_index 템플릿은 이름 충돌없이 admin/index.html에서 상속받을 수 있습니다.

+1

굉장! 환상적! 단순한! 나는 프로젝트에서 같은 일을했지만 urls.py. – les

+0

이것은 매우 간단하므로 [documentation] (https://docs.djangoproject.com/en/1.11/ref/contrib/admin/#customizing-the-adminsite-class)로 들어가야합니다. – shadi

0

모델의 변경 권한을 제거하려면 템플릿을 수정하는 대신 모델의 관리 클래스에서 프로그래밍 방식으로이 작업을 수행 할 수 있습니다. 이렇게하면 사용자 기준에 따라 링크를 활성화/비활성화 할 수 있다는 장점이 있습니다. 권한 변경은 목록 변경, 양식 변경 및 관리 색인에 반영됩니다.

from django.contrib import admin 
from your_app.models import YourModel 

class CustomModelAdmin(admin.ModelAdmin): 
    def has_change_permission(self, obj=None): 
     # check request.user creds, etc 
     return False 

admin.site.register(YourModel, CustomModelAdmin) 

참조 : 장고 관리 옵션에 대한 자세한 내용은 https://docs.djangoproject.com/en/1.7/ref/contrib/admin/#django.contrib.admin.ModelAdmin.has_change_permission

+0

이것은 달성하고자하는 것이 아닙니다. 관리 색인의 모델 이름을 클릭하면 "변경"버튼과 동일한 페이지로 연결되므로 변경 권한도 계속 사용할 수 있습니다. 나는 오직 변경 버튼을 제거하고 싶습니다. 다른 링크를 통해 변경하는 것이 아닙니다. – James

+0

그래, 그럼 템플릿 코드를 수정하는 것이 낫습니다. – Brandon

0

이 AdminSite에 대한 index_template 재정의 청소기 될 수 있습니다 다시 비록

from django.contrib.admin.sites import AdminSite 
AdminSite.index_template = '...' 

, 이상의 외부 코드 코드 할 수있다 바인드하기 전에 사용자 정의 인스턴스에서이를 변경하거나 사용자 정의 AdminSite의 서브 클래스를 작성한 후이를 대체하고 대신 해당 사용자 정의 AdminSite를 등록하십시오.

관련 문서 :

https://docs.djangoproject.com/en/dev/ref/contrib/admin/#root-and-login-templates

편집 : 명확하게 - 이것은 당신이 당신이 템플릿에 변화하고있는 부분을 대체 할 수있는 것, 그래서 어떤 업스트림 변경을 상속합니다.

+0

매우 정확하고 유용한^_^ – James