I am working with a Django
project, where I am trying to render a pdf and save it in my database.
my models.py
:
class Final_report(models.Model):
industry = models.ForeignKey(Industry, null=True, blank=True, on_delete=models.CASCADE)
inspector = models.ForeignKey(Inspector, null=True, blank=True, on_delete=models.CASCADE)
created_date = models.DateTimeField(default=datetime.now, blank=True)
pdf = models.FileField(upload_to='documents')
my views.py
:
def submit_report(request, pk):
template = get_template('app/pdf_rprt.html')
Industry_obj = Industry.objects.get(id=pk)
Industry_Report_obj = Industry_obj.industry_report_set.all()
report_tableA_obj = report_tableA.objects.filter(industry_report__industry=Industry_obj)
context = {
'industry' : Industry_obj,
'Industry_Report' : Industry_Report_obj,
'report_tableA' : report_tableA_obj,
}
html = template.render(context)
pdf = render_to_pdf('app/pdf_rprt.html', context)
if pdf:
this_industry = Industry_obj
this_inspector = request.user.inspector_releted_user
this_pdf = pdf
this_created_date = timezone.now()
Final_report_obj = Final_report.objects.create(industry=this_industry, inspector=this_inspector, pdf=this_pdf, created_date=this_created_date)
Final_report_obj.save()
return redirect('app:index')
here the render_to_pdf
comes from a custom build function in utils.py
:
def render_to_pdf(template_src, context_dict={}):
template = get_template(template_src)
html = template.render(context_dict)
result = BytesIO()
pdf = pisa.pisaDocument(BytesIO(html.encode("ISO-8859-1")), result)
if not pdf.err:
return HttpResponse(result.getvalue(), content_type='application/pdf')
return None
Now it says the following error:
Internal Server Error: /submit_report/1/
Traceback (most recent call last):
File "G:\Python\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
response = get_response(request)
File "G:\Python\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "G:\Python\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "D:\Project\django\hackathon practice\ProjectSurokkhaBeta_1.7\app\views.py", line 526, in submit_report
Final_report_obj = Final_report.objects.create(industry=this_industry, inspector=this_inspector, pdf=this_pdf, created_date=this_created_date)
File "G:\Python\lib\site-packages\django\db\models\manager.py", line 82, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "G:\Python\lib\site-packages\django\db\models\query.py", line 433, in create
obj.save(force_insert=True, using=self.db)
File "G:\Python\lib\site-packages\django\db\models\base.py", line 745, in save
self.save_base(using=using, force_insert=force_insert,
File "G:\Python\lib\site-packages\django\db\models\base.py", line 782, in save_base
updated = self._save_table(
File "G:\Python\lib\site-packages\django\db\models\base.py", line 887, in _save_table
results = self._do_insert(cls._base_manager, using, fields, returning_fields, raw)
File "G:\Python\lib\site-packages\django\db\models\base.py", line 924, in _do_insert
return manager._insert(
File "G:\Python\lib\site-packages\django\db\models\manager.py", line 82, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "G:\Python\lib\site-packages\django\db\models\query.py", line 1204, in _insert
return query.get_compiler(using=using).execute_sql(returning_fields)
File "G:\Python\lib\site-packages\django\db\models\sql\compiler.py", line 1390, in execute_sql
for sql, params in self.as_sql():
File "G:\Python\lib\site-packages\django\db\models\sql\compiler.py", line 1333, in as_sql
value_rows = [
File "G:\Python\lib\site-packages\django\db\models\sql\compiler.py", line 1334, in <listcomp>
[self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
File "G:\Python\lib\site-packages\django\db\models\sql\compiler.py", line 1334, in <listcomp>
[self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
File "G:\Python\lib\site-packages\django\db\models\sql\compiler.py", line 1285, in pre_save_val
return field.pre_save(obj, add=True)
File "G:\Python\lib\site-packages\django\db\models\fields\files.py", line 286, in pre_save
if file and not file._committed:
AttributeError: 'HttpResponse' object has no attribute '_committed'
[12/Jan/2021 00:19:32] "GET /submit_report/1/ HTTP/1.1" 500 142121
[12/Jan/2021 00:20:13] "GET /report_generating/1/ HTTP/1.1" 200 4082
mainly it shows error by indicating this line:
Final_report_obj = Final_report.objects.create(industry=this_industry, inspector=this_inspector, pdf=this_pdf, created_date=this_created_date)
How can I fix it?