2015-11-09 66 views
0

我有一個使用模板如下列表視圖(用於管理界面):如何將Django ListView轉換爲管理網站上的工作?

class UserImageListPendingView(ListView): 
    model = UserImage 
    queryset = UserImage.objects.filter(status=ImageBase.PENDING) 
    template_name = 'userimage_list_pending.html' 
    context_object_name = 'userimage_list' 
    paginate_by = 5 
    @method_decorator(staff_member_required) 
    def dispatch(self, *args, **kwargs): 
     return super(UserImageListPendingView, self).dispatch(*args, **kwargs) 

雖然這個工程有問題,把網址中的urls.py:

urlpatterns = [ 
    url(r'^admin/app/pendinguserimages/?$', login_required(
     UserImageListPendingView.as_view()), 
     name='pendinguserimages'), 
... 
] 

。 ..這會阻止重定向正常工作。

我曾嘗試通過admin.py定義的網址:

def get_admin_urls(urls): 
    def get_urls(): 
     return patterns('', 
      url(r'^app/pendinguserimages/?$', 
       UserImageListPendingView.as_view(), name='pendinguserimages'), 
     url(r'^app/checkuserimage/(?P<pk>[0-9]+)/?$', 
      userimage_check, name='checkuserimage'), 
      ... 
     ) + urls 
    return get_urls 

admin_urls = get_admin_urls(admin.site.get_urls()) 
admin.site.get_urls = admin_urls 

...但有扭轉checkuserimage URL時出錯。

我該如何轉換此視圖以適應管理網站,但仍然使用該模板?

回答

0

我不需要重寫ListView。在admin.py中而不是在urls.py中定義URL後,我需要在模板中反轉URL時將名稱前面加上「admin:」,如下所示:

<a href="{% url 'admin:checkuserimage' record.id %}">check</a>