2013-02-26 5 views
0

내 장고 사이트에서 관리하는 객체 중 하나는 데이터베이스에 하나의 인스턴스 만 갖습니다. 따라서이 첫 번째 개체에 대한 '편집'페이지로 간단히 리디렉션되도록 목록보기를 변경하려고합니다.관리자의 Django 사용자 정의 목록보기

기본적으로/admin/my_site/widgets을 누르면/admin/my_site/widget/1로 리디렉션하려고합니다. 사용자 지정보기, 사용자 지정 서식 파일 등을 시도했지만이 작업을 수행하는 쉬운 방법을 찾을 수 없습니다.

class WidgetAdmin(admin.ModelAdmin): 
    def list_view(self, request): 
     widget = Widget.objects.all()[0] 
     return HttpResponseRedirect('/admin/my_site/widget/%s' % widget.id) 

나는 또한 시도했다 변화의 URL의에 :

내가 이런 걸 (I 목록보기를 변경하는 방법을 알아낼 수 없기 때문에 작동하지 않습니다)하고 싶은 거의 같다 목록 요청을 일치시키고 거기에서 리다이렉션을 수행하지만 목록 요청을 완전한 담요 정규식 (즉, (r /^.*$/))과 일치시키는 것처럼 보이지는 않습니다. 이는 무한 루프 리다이렉트를 얻는다는 것을 의미합니다.

+2

https://github.com/tttallis/django-singletons – Brandon

답변

0

이게 내가 어떻게 정렬했는지입니다.

class WidgetAdmin(admin.ModelAdmin): 
    def list_view(self, request): 
     widget = Widget.objects.all()[0] 
     return HttpResponseRedirect('/admin/my_site/widget/%s' % widget.id) 

    def get_urls(self): 
     from django.conf.urls.defaults import * 
     urls = super(WidgetAdmin, self).get_urls() 
     my_urls = patterns('', 
        (r'^$', admin.site.admin_view(self.list_view)) 
       ) 
     return my_urls + urls 
1

나는 똑같은 것이 필요했습니다. ModelAdmin의 changelist_view를 사용하여 약간 다른 방법으로 해결했습니다. 예를 사용하면 다음과 같이 보일 수 있습니다.

class MySingleEditAdmin(admin.ModelAdmin): 
    def changelist_view(self, request, extra_context=None): 
     object, created = self.get_my_object() 
     url = reverse('admin:%s_%s_change' %(object._meta.app_label, object._meta.module_name), args=[object.id]) 
     return HttpResponseRedirect(url) 


class WidgetAdminAdmin(MySingleEditAdmin): 
    def get_my_object(self): 
     return Widget.objects.get_or_create(pk=1, ...default_data...) 
관련 문제