And*_*rea 5 django django-admin
我需要向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
Run Code Online (Sandbox Code Playgroud)
这确保......
问题是我不知道如何绑定some-url到标准的ChangeList视图.
因此,您需要第二个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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4379 次 |
| 最近记录: |