2015-11-09 37 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>