【问题标题】:Django Admin - Custom changelist viewDjango Admin - 自定义更改列表视图
【发布时间】:2011-10-12 10:50:09
【问题描述】:

我需要向 Django Admin 添加一个自定义视图。这应该类似于特定模型的标准 ChangeList 视图,但具有自定义结果集。 (我需要显示所有日期比今天早的所有模型,但这并不真正相关)。

我可以做到这一点的一种方法是使用 Admin queryset 方法,例如

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 视图。

【问题讨论】:

    标签: django django-admin


    【解决方案1】:

    所以您想要第二个 URL 进入更改列表视图,这样您就可以通过请求的 URL 检查这两个中的哪一个,然后相应地更改查询集? 只需模仿 django.contrib.admin.options 所做的并将另一个 URL 添加到 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-11
      • 2012-02-27
      • 2011-05-07
      • 1970-01-01
      • 1970-01-01
      • 2019-12-09
      • 2019-10-12
      • 1970-01-01
      相关资源
      最近更新 更多