Здравствуйте хочу что бы при входе какого либо элемента в админке, я мог распечатывать pdf документ, вот и решил воспользоваться easy_pdf
вот как это выглядит
url(r'^pdf/(.+)/$', wrap(PDFView.as_view()), name='pdf'),
тоесть если я перехожу по этому адресу http://127.0.0.1:8000/admin/assinc/grain_weight/pdf/2/ то попадаю на данный url, но есть одно но, мне нужно что бы в зависимости от url документ менялся, значит как я думаю мне нужно получить значение последней секции урла в данном случае 2 и вытащить соответствующие значения из базы, поэтому решил воспользоваться DetailView
class PDFView(PDFTemplateView, DetailView):
template_name="hello.html"
context_object_name = 'Pdf'
def render_to_response(self, context, **response_kwargs):
return super(PDFView, self).render_to_response(context, **response_kwargs)
так как сам не могу это реализовать и поэтому нужно както воспользваться рабочими примерами, но в каторый раз натыкаюсь что все начинает срабатывать вот с этой функции def get(): так и не понял где это прописано что она запускается как входная функция, ну вот хочу получить объект self.object
class BaseDetailView(SingleObjectMixin, View):
"""
A base view for displaying a single object
"""
def get(self, request, *args, **kwargs):
self.object = self.get_object()
context = self.get_context_data(object=self.object)
return self.render_to_response(context)
как видно это вот
self.object = self.get_object()
метод self.get_object() находится в классе SingleObjectMixin
def get_context_data(self, **kwargs):
"""
Insert the single object into the context dict.
"""
context = {}
if self.object:
context['object'] = self.object
context_object_name = self.get_context_object_name(self.object)
if context_object_name:
context[context_object_name] = self.object
context.update(kwargs)
return super(SingleObjectMixin, self).get_context_data(**context)
и в итоге получаю в браузере 'PDFView' object has no attribute 'object'
пытаюсь поставить значение в ручную, так ради отладки или посмотреть логику
def get(self, request, *args, **kwargs):
self.object = 3
context = self.get_context_data(object=self.object)
return self.render_to_response(context)
в итоге ничего не выходит, хотя по идее должно же прокатить, здесь же если пишу руками то ошибка пропадает
def get_context_data(self, **kwargs):
"""
Insert the single object into the context dict.
"""
context = {}
self.object = 3
if self.object:
context['object'] = self.object
context_object_name = self.get_context_object_name(self.object)
if context_object_name:
context[context_object_name] = self.object
context.update(kwargs)
return super(SingleObjectMixin, self).get_context_data(**context)