Как передать параметры в общие представления Django - PullRequest
0 голосов
/ 10 декабря 2011

Я хотел бы передать число в общий вид (DetailView), чтобы получить один объект. Вот мой код

Urlpattern

(r'^newreportview/(?P<number>\w+)/$', NewReportView.as_view()),  

View Class

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

Как мне передать 'число' в это универсальное представление и получить объект Mytask с этим 'номер '?

Спасибо

1 Ответ

7 голосов
/ 10 декабря 2011

Вы пропустили весь смысл общих взглядов.Для простого 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'] сработало бы, как и исправленный URL, который я показал здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...