gpt4 book ai didi

Django Admin - 自定义更改 ListView

转载 作者:行者123 更新时间:2023-12-04 19:18:13 26 4
gpt4 key购买 nike

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

我可以做到这一点的一种方法是使用管理员 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 View 。

最佳答案

所以你想要第二个 URL 去更改 ListView ,这样你就可以通过请求的 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

关于Django Admin - 自定义更改 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6814157/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com