Экспорт определенных данных в приложении в администраторе django в pdf - PullRequest
0 голосов
/ 27 мая 2019

Я уже установил все, что нужно для экспорта данных в формат PDF.Теперь моя проблема заключается в том, как я могу сделать этот вариант использования для администратора django.Могу ли я выполнить это с помощью действия, одновременно предоставив представление класса, а затем добавить это конкретное представление класса в действии к modeladmin?Это возможно?Как я могу это сделать?

Это мой класс

class PdfCarrier(View):

    def get(self, request, carrier_id):
        carrier = Carrier.objects.filter(id=carrier_id).first()
        params = {
        'today': timezone.now(),
        'carrier': carrier,
        'request': request
        }

        response = HttpResponse(content_type='application/pdf')
        response['Content-Disposition'] = "inline; filename=Carrier-Report.pdf"

        html = render_to_string('carrier/carrier_pdf.html', params)
        css = [
            base.BASE_DIR + '/src/css/bootstrap3/css/bootstrap.min.css'
        ]

        HTML(string=html).write_pdf(response, stylesheets=css)
        return response
        # return Render.render('carrier/carrier_print.html', params)

мой URL, обеспечивающий его.

    path('<uuid:carrier_id>/carrier-report.pdf', views.PdfCarrier.as_view(), name="print_carrier"),

1 Ответ

0 голосов
/ 27 мая 2019

Это возможно. В классе администратора вашей модели добавьте путь PDF к списку встроенных URL.

class YourModelAdmin(admin.ModelAdmin):
    def get_urls(self):
        urls = super().get_urls()
        custom_urls = [
            path('<uuid:carrier_id>/carrier-report.pdf', self.pdf_view),
        ]
        return custom_urls + urls

Затем определите метод pdf_view, как показано ниже.

class YourModelAdmin(admin.ModelAdmin):
    ...
    def pdf_view(self, request, carrier_id):
        # do whatever you want
        # and return the response

Вот и все.

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