Django Admin - 向模型添加自定义视图

时间:2014-01-15 13:36:45

标签: python django django-admin views

所以基本上我想要的是为我的一个模型提供自定义视图(打印视图)。 我添加了一个自定义按钮,我更改了我的模型的get_url():

def get_urls(self):
    urls = super(MyModelAdmin, self).get_urls()
    my_urls = patterns('',
        url(r'^/print/schedule$', 
self.admin_site.admin_view(views.PrintScheduleDetailView.as_view()), name='print_schedule'),
    )
    return my_urls + urls

当我尝试查看它时: my_app应用/ my_model / primary_key /打印/日程表/ 它告诉我pk 1 / print / schedule的对象不存在....

我该怎么办?

谢谢, ARA

编辑:这是我的观点类:

class PrintScheduleDetailView(generic.DetailView):
model = Tournament
template_name = 'print/schedule.html'

我得到了有点工作的链接......

本地主机/赛/打印/时间表/

工作,但它告诉Generic详细信息视图PrintScheduleDetailView必须使用对象pk或slug调用....我尝试添加主键localhost / tournament / print / schedule / pk但没有工作... 谢谢, ARA

2 个答案:

答案 0 :(得分:0)

也许应该更改正则表达式以删除'^'符号,如:

url(r'/print/schedule$'

答案 1 :(得分:0)

根据类视图的Detailview:

  

默认情况下,这需要self.querysetpkslug参数   在URLconf中,但子类可以覆盖它以返回任何对象。

url(r'^/(?P<pk>[\d]+)/print/schedule/$', self.admin_site.admin_view(views.PrintScheduleDetailView.as_view()), name='print_schedule'),)

我相信你需要传递pk,除非你是通过另一种方式获取它(你还没有粘贴你的类视图)。