Рендеринг динамического поиска в PDF xhtml2pdf Django
У меня возникли проблемы с выводом поискового запроса в PDF в Django. Я пытаюсь добиться того, чтобы распечатать в PDF поиск на веб-странице (в основном я фильтрую некоторые данные) и распечатать результаты в PDF.
Я могу быть более понятным с некоторым кодом.
views.py
def total_flight_hours(request):
students = Student.objects.all()
instructors = Instructor.objects.all()
aircrafts = Aircraft.objects.all()
start_date = request.POST.get('start_date')
if not start_date:
start_date = dt.now().date()
end_date = request.POST.get('end_date')
if not end_date:
end_date = dt.now().date()
student = request.POST.get('student')
if not student:
student = ''
instructor = request.POST.get('instructor')
if not instructor:
instructor = ''
aircraft = request.POST.get('aircraft')
if not aircraft:
aircraft = ''
log_entry = LogEntry.objects.filter(Q(date__range=[start_date, end_date]) & Q(
student_id__id__icontains=student) & Q(instructor_id__id__icontains=instructor) & Q(aircraft_id__id__icontains=aircraft))
log_entry_dual = LogEntry.objects.filter(Q(date__range=[start_date, end_date]) & Q(
student_id__id__icontains=student) & Q(instructor_id__id__icontains=instructor) & Q(aircraft_id__id__icontains=aircraft) & Q(solo_flight=False))
total_flight_hours = log_entry_dual.aggregate(eet=Sum(ExpressionWrapper(
F('ata') - F('etd'), output_field=IntegerField()), output_field=DurationField()))['eet']
if total_flight_hours != None:
total_flight_hours = duration(total_flight_hours)
log_entry_solo = LogEntry.objects.filter(Q(date__range=[start_date, end_date]) & Q(
student_id__id__icontains=student) & Q(instructor_id__id__icontains=instructor) & Q(aircraft_id__id__icontains=aircraft) & Q(solo_flight=True))
total_flight_hours_solo = log_entry_solo.aggregate(eet=Sum(ExpressionWrapper(
F('ata') - F('etd'), output_field=IntegerField()), output_field=DurationField()))['eet']
if total_flight_hours_solo != None:
total_flight_hours_solo = duration(total_flight_hours_solo)
log_entry_list = zip(log_entry, log_entry_solo)
student_mission = StudentMission.objects.filter(
log_entry_id__in=log_entry)
month_begin = dt.today().replace(day=1, hour=0, minute=0, second=0, microsecond=0)
today = dt.today().date()
context = {
'log_entry': log_entry,
'log_entry_solo': log_entry_solo,
'total_flight_hours': total_flight_hours,
'total_flight_hours_solo': total_flight_hours_solo,
'students': students,
'instructors': instructors,
'aircrafts': aircrafts,
'student_mission': student_mission,
'log_entry_list': log_entry_list,
'month_begin': month_begin,
'today': today
}
return render(request, 'flight/total_flight_hours.html', context)
Приведенная выше функция является представлением для моей страницы, которая работает нормально. Я пытаюсь добиться того, чтобы только результаты этой страницы печатались в PDF. Я попытался сделать представление следующим образом: views.py
Проблема в том, что в PDF-файле печатается шаблон, но не результаты запроса. Я пытался найти какую-то информацию в интернете, но ничего не смог найти. Для справки выкладываю ссылки и шаблон pdf
urls.py
urlpatterns = [
path('', views.aircraft_home, name='aircraft_home'),
path('add_aircraft', views.add_aircraft, name='add_aircraft'),
path('aircraft_list', views.AircraftListView.as_view(), name='aircraft_list'),
path('add_new_flight', views.add_new_flight, name='add_new_flight'),
path('edit_flight/<str:pk>', views.edit_flight, name='edit_flight'),
path('delete_flight/<str:pk>', views.delete_flight, name='delete_flight'),
path('flight_list', views.FlightListView.as_view(), name='flight_list'),
path('total_flight_hours', views.total_flight_hours, name='total_flight_hours'),
# PDF Views
path('total_flight_hours_render_pdf_view', views.GenerateTotalFlightHoursPDF.as_view(),
name='total_flight_hours_render_pdf_view')
]
шаблон
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Test</title>
</head>
<body>
<table>
<thead>
<tr>
<th>Date</th>
<th>Aircraft</th>
<th>Dep. AD</th>
<th>Arr. AD</th>
<th>ATD</th>
<th>ATA</th>
<th>Tot. Time</th>
<th>Solo Time</th>
<th>Instructor</th>
<th>Student</th>
</tr>
</thead>
<tbody>
{% for log in log_entry %}
<tr>
<td>{{log.date|date:'d-m-Y'}}</td>
<td>{{log.aircraft}}</td>
<td>{{log.adep.icao_code}}</td>
<td>{{log.ades.icao_code}}</td>
<td>{{log.etd|time:'H:i'}}</td>
<td>{{log.ata|time:'H:i'}}</td>
<td>{% if log.solo_flight == False %}{{log.eet|date:'H:i'}}{% endif %}</td>
<td>{% if log.solo_flight == True %}{{log.eet|date:'H:i'}}{% endif %}</td>
<td>{{log.instructor.first_name}} {{log.instructor.last_name}}</td>
<td>{{log.student.first_name}} {{log.student.last_name}}</td>
</tr>
{% endfor %}
</tbody>
<tr>
<th scope="row">Total Hours</th>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>{{total_flight_hours}}</td>
<td>{% if total_flight_hours_solo != None %}{{total_flight_hours_solo}}{% endif %}</td>
<td></td>
<td></td>
</tr>
</table>
</body>
</html>
Заранее благодарю за помощь