我想将一个数字传递给我的通用视图(DetailView)来获取一个对象这是我的代码
URLPATTERN
(r'^newreportview/(?P<number>\w+)/$', NewReportView.as_view()),
查看课程
class NewReportView(DetailView):
template_name = "report/newreportview.html"
context_object_name = "newreportview"
def get_queryset(self):
task= get_object_or_404(MyTask,applicationnnumber=self.args[0])
return task
我想这一行有问题
name = get_object_or_404(MyTask,applicationnnumber=self.args[0])
错误消息:
Exception Type: IndexError
Exception Value:
tuple index out of range
我应该如何通过&#39; number&#39;在这个通用视图中,使用这个&#39;数字&#39;?
获取Mytask对象由于
答案 0 :(得分:7)
您错过了通用视图的全部内容。对于简单的DetailView(它是单个对象的视图),您只需在类中定义model
和slug
属性:
(r'^newreportview/(\d+)/$', NewReportView.as_view()),
class NewReportView(DetailView):
template_name = "report/newreportview.html"
model = MyTask
slug = 'applicationnnumber'
(您也可以轻松地将这三个作为参数传递给URL定义,因此根本不需要创建子类。)
您没有获得self.args
的值的原因是您已将参数作为kwarg传递,而不是arg。所以self.kwargs['number']
会起作用,我在此处显示的修改后的网址也是如此。