Django管理员 - 自定义更改列表视图 [英] Django Admin - Custom changelist view

查看:696
本文介绍了Django管理员 - 自定义更改列表视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要向Django管理员添加自定义视图。这应该与某个模型的标准ChangeList视图相似,但具有自定义结果集。 (我需要显示所有具有日期的其他日期少于今天的模型,但这并不真正相关)。

I need to add a custom view to the Django Admin. This should be similar to a standard ChangeList view for a certain model, but with a custom result set. (I need to display all models having some date or some other date less than today, but this is not really relevant).

单向我可以这样做是通过使用Admin queryset 方法,如

One way I can do this is by using the Admin queryset method, like

class CustomAdmin(admin.ModelAdmin):
    ...
    def queryset(self, request):
        qs = super(CustomAdmin, self).queryset(request)
        if request.path == 'some-url':
            today = date.today()
            # Return a custom queryset
        else:
            return qs

这确保...

问题是我不知道如何将 some-url 绑定到标准的ChangeList视图。

The problem is that I do not know how to tie some-url to a standard ChangeList view.

推荐答案

所以你想要一个第二个URL转到更改列表视图,以便您可以检查所请求的URL中的哪一个,然后相应地更改查询集?
只需模拟django.contrib.admin.options所做的并添加另一个URL到ModelAdmin。

So you want a second URL that goes to the changelist view so you can check which of the two it was by the requested URL and then change the queryset accordingly? Just mimick what django.contrib.admin.options does and add another URL to the ModelAdmin.

应该如下所示:

class CustomAdmin(admin.ModelAdmin):

    def get_urls(self):
        def wrap(view):
            def wrapper(*args, **kwargs):
                kwargs['admin'] = self   # Optional: You may want to do this to make the model admin instance available to the view
                return self.admin_site.admin_view(view)(*args, **kwargs)
            return update_wrapper(wrapper, view)

        # Optional: only used to construct name - see below
        info = self.model._meta.app_label, self.model._meta.module_name

        urlpatterns = patterns('',
            url(r'^my_changelist/$',   # to your liking
                wrap(self.changelist_view),
                name='%s_%s_my_changelist' % info)
        )
        urlpatterns += super(CustomAdmin, self).get_urls()
        return urlpatterns

这篇关于Django管理员 - 自定义更改列表视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆