我想在管理员中提供与changelist_view()
非常相似的自定义视图,但没有指向编辑表单视图的链接。用户将能够选择列表中的项目并应用操作,就像在更改列表表单中一样,但他们无权访问编辑表单。
我认为ModelAdmin类中的结构应该是这样的:
class ProductAdmin(admin.ModelAdmin):
def get_urls(self):
urls = super(ProductAdmin, self).get_urls()
urls += patterns('',
(r'^selectlist/$', self.selectlist_view)
)
return urls
def selectlist_view(self):
return render_to_response(...)
要返回的视图与ModelAdmin.changelist_view()
非常相似。什么是最好和干的方法呢?
答案 0 :(得分:3)
以下自定义ModelAdmin是迄今为止我能想出的最佳解决方案:
class UserModelAdmin(ModelAdmin):
def get_urls(self):
urls = super(UserModelAdmin, self).get_urls()
info = self.model._meta.app_label, self.model._meta.module_name
select_list_url = patterns('',
url(r'^selectlist/$', self.selectlist_view,
name='%s_%s_select' % info)
)
return select_list_url + urls
def selectlist_view(self, request, extra_context=None):
temp_list_display_links = self.list_display_links
self.list_display_links = (None, )
response = self.changelist_view(request, extra_context)
self.list_display_links = temp_list_display_links
return response
答案 1 :(得分:3)