Django正在抛出“'NoneType'对象没有属性'encode'”错误。我正在尝试使用django-easy-pdf的PDFTemplateView来生成pdf报告表单。唯一的问题是,调试器没有给我很多方向。我希望第二双眼睛可以提供帮助。
感谢任何和所有帮助!
class ToolReport(PDFTemplateView):
model = ToolCalibration
template_name = "report.html"
inlines = [SerialFormSet, PartFormSet]
def get_context_data(self, **kwargs):
context = super(ToolReport, self).get_context_data(**kwargs)
if 'pk' in self.kwargs:
context['tool'] = ToolCalibration.objects.get(id=self.kwargs['pk'])
return context
from django.db import models
from django.core.urlresolvers import reverse
from selectables.models import EnterpriseSchema, State, Country
class ToolStatus(models.Model):
status = models.CharField(max_length=40)
def __unicode__(self):
return (self.status)
class CalibrationInterval(models.Model):
interval = models.CharField(max_length=25)
def __unicode__(self):
return (self.interval)
class CalibrationMethod(models.Model):
method = models.CharField(max_length=25)
def __unicode__(self):
return (self.method)
class Manufacturer(models.Model):
name = models.CharField(max_length=35)
def __unicode__(self):
return (self.name)
class UsageLocation(models.Model):
location = models.CharField(max_length=75)
owner = models.CharField(max_length=25, default="AVMATS")
def __unicode__(self):
return (self.location)
class Vendor(models.Model):
name = models.CharField(max_length=255)
street_address = models.CharField(max_length=255)
city = models.CharField(max_length=35)
state = models.ForeignKey(State, null=True)
country = models.ForeignKey(Country, default=lambda:
Country.objects.get(name__exact="United States"))
zipcode = models.IntegerField()
contact_title = models.CharField(max_length=50)
free_phone = models.CharField("Toll free phone number", max_length=30, blank=True)
phone_number = models.CharField(max_length=30, blank=True)
extension = models.CharField("Phone extension", max_length=30, blank=True)
email_address = models.CharField(max_length=75, blank=True)
website = models.CharField(max_length=75, blank=True)
free_fax = models.CharField("Toll free fax", max_length=30, blank=True)
fax_number = models.CharField(max_length=50, blank=True)
notes = models.TextField(blank=True)
def __unicode__(self):
return (self.name)
class ToolCalibration(models.Model):
schema = models.ForeignKey(EnterpriseSchema, verbose_name="Location")
old_control_number = models.CharField(max_length=25, blank=True)
due_date = models.DateField()
last_certified = models.DateField()
tool_status = models.ForeignKey(ToolStatus)
calibration_interval = models.ForeignKey(CalibrationInterval)
calibration_method = models.ForeignKey(CalibrationMethod)
usage_location = models.ForeignKey(UsageLocation)
description = models.CharField(max_length=75)
manufacturer = models.ForeignKey(Manufacturer)
usage_range = models.CharField(max_length=35)
notes = models.TextField(blank=True)
po_required = models.BooleanField("Purchase order required")
po_number = models.CharField("Purchase order number", max_length=35, blank=True, null=True)
ra_number = models.CharField("Return authorization number", max_length=35, blank=True)
calibration_cost = models.CharField(max_length=30, blank=True)
vendor = models.ForeignKey(Vendor)
date_sent = models.DateField(blank=True)
date_returned = models.DateField(blank=True)
man_hours = models.CharField("In-house man hours", max_length=25, blank=True)
technician = models.CharField(max_length=45)
facility = models.CharField(max_length=45)
out_of_tolerance = models.BooleanField()
tolerance_notes = models.TextField(blank=True)
success_url = "/toolcal/success"
def __unicode__(self):
return (u"%s: " %self.id) + (u"%s" %self.description)
class SerialNumber(models.Model):
tool = models.ForeignKey(ToolCalibration)
serial = models.CharField(max_length=35)
def __unicode__(self):
return (self.serial)
class PartNumber(models.Model):
tool = models.ForeignKey(ToolCalibration)
number = models.CharField(max_length=35)
def __unicode__(self):
return (self.number)
class Note(models.Model):
tool = models.ForeignKey(ToolCalibration)
description = models.CharField(max_length=50)
pub_date = models.DateTimeField()
def __unicode__(self):
return self.description
<html>
<head>
<link rel="stylesheet" href="/media/themes/txt/css/report.css" />
</head>
<body>
<div class="content">
<div class="row">
<div class="12u">
<h1>Aviation Turbines International</h1>
</div>
</div>
<div class="row">
<div class="7u">
<h2>In-House Calibration Report For: </h2>
</div>
<div class="5u">
<h2>ID Number { tool.id }}</h2>
</div>
</div>
<div class="row">
<div class="6u">
<h2>Calibration Due Date: {{ tool.due_date }} </h2>
</div>
<div class="6u">
<h2>Date Last Calibrated: {{ tool.last_certified }} </h2>
</div>
</div>
<div class="row">
<div class="12u">
<h1>Tool (Equipment) Identification</h1>
</div>
</div>
<div class="row">
<div class="12u">
<h2>Description: {{ tool.description }}</h2>
</div>
</div>
<div class="row">
<div class="12u">
<h2>Manufacturer: {{ tool.manufacturer }}</h2>
</div>
</div>
{% if tool.partnumber %}
<div class="row">
<div class="12u">
<h2>Model/Part Number(s): {% for part_number in tool.partnumber_set.all %}[{{ part_number }}] {% endfor %}</h2>
</div>
</div>
{% endif %}
{% if tool.serialnumber %}
<div class="row">
<div class="12u">
<h2>Serial Number(s): {% for serial_number in tool.serialnumber_set.all %}[{{ serial_number }}] {% endfor %}</h2>
</div>
</div>
{% endif %}
{% if tool.usage_range %}
<div class="row">
<div class="6u">
<h2>Full Range: {{ tool.usage_range }}</h2>
</div>
<div class="6u">
<h2>Limited Range: </h2>
</div>
</div>
{% endif %}
<div class="row">
<div class="12u">
<h1>Item Condition/Special Requirements-Calibration Test Results</h1>
</div>
</div>
<div class="row">
<div class="12u">
<h2>Accomplished in Accordance with Manufacturer's Specifications and/or Standard Practices</h2>
</div>
</div>
<div class="box"
<div class="row">
<div class="box"
<div class="6u">
<h2>As Received</h2>
</div>
</div>
<div class="box"
<div class="6u">
<h2>As Returned</h2>
</div>
</div>
</div>
</div>
<div class="box"
<div class="row">
<div class="box"
<div class="6u">
<h2>[] In Tolerance </h2>
<h2>[] Out of Tolerance </h2>
<h2>[] Limited Calibration </h2>
<h2>[] Inoperative </h2>
<h2>[] Note: </h2>
</div>
</div>
<div class="box"
<div class="6u">
<h2>[] In Tolerance </h2>
<h2>[] Out of Tolerance </h2>
<h2>[] Limited Calibration </h2>
<h2>[] Inoperative </h2>
<h2>[] Adjusted </h2>
</div>
</div>
</div>
</div>
<div class="row">
<div class="12u">
<h2>This equipment was checked/calibrated through [] full or [] limited range, and kept within _____ accuracy</h2>
</div>
</div>
<div class="row">
<div class = "box">
<div class="2u">
<h2>Standard</h2>
</div>
</div>
<div class = "box">
<div class="2u">
<h2>Actual Reading</h2>
</div>
</div>
<div class = "box">
<div class="3u">
<h2>Deviation</h2>
</div>
</div>
<div class = "box">
<div class="3u">
<h2>In/Out of Cal</h2>
</div>
</div>
<div class = "box">
<div class="3u">
<h2>Final Reading</h2>
</div>
</div>
</div>
{% for i in "xxxxxxxxxxxxx" %}
<div class="row">
<div class = "box">
<div class="2u">
<h2>Standard</h2>
</div>
</div>
<div class = "box">
<div class="2u">
<h2>Actual Reading</h2>
</div>
</div>
<div class = "box">
<div class="3u">
<h2>Deviation</h2>
</div>
</div>
<div class = "box">
<div class="3u">
<h2>In/Out of Cal</h2>
</div>
</div>
<div class = "box">
<div class="3u">
<h2>Final Reading</h2>
</div>
</div>
</div>
{% endfor %}
</div>
</body>
答案 0 :(得分:0)
尝试删除report.css并在样式标记中包含内容。