我是Django的新手,想知道我是否能得到一些帮助。 我试图在我的模板中显示一个ToolCheckOut的表单,它将有两个外键引用我的两个模型。我一直收到这个错误,没有找到解决方案的运气。错误:"强制转换为Unicode:需要字符串或缓冲区,长期找到"它在我的模板上为此行提供了此错误:" {{form.as_p}}"
我正在使用之前为此项目构建的mysql数据库。
形式:
class Tool(models.Model):
ToolID=models.CharField(max_length=100, primary_key = True, unique=True, null=False)
Quantity=models.IntegerField(null=False)
Location=models.CharField(max_length=100, null=False)
CategoryID=models.IntegerField(null=True)
Deleted=models.BooleanField(default=0)
objects=models.Manager()
class Meta:
managed=True
db_table='Tool'
def __unicode__(self):
return self.ToolID
def get_absolute_url(self):
return reverse("ToolSearch:toolSearchResults", kwargs={"pk": self.ToolID})
class Party(models.Model):
PartyID=models.AutoField(primary_key=True)
FirstName=models.CharField(max_length=100, null=False)
LastName=models.CharField(max_length=100, null=False)
PhoneNumber=models.CharField(max_length=25, null=False)
Organization=models.CharField(max_length=100, null=True)
Deleted=models.BooleanField(default=0)
objects=models.Manager()
class Meta:
managed=True
db_table='Party'
def __unicode__(self):
return self.PartyID
def get_absolute_url(self):
return reverse("ToolSearch:borrowerUpdate", kwargs={"pk": self.PartyID})
class ToolTransaction(models.Model):
CheckOutID=models.AutoField(primary_key=True)
ToolID=models.ForeignKey(Tool, on_delete=models.CASCADE)
PartyID=models.ForeignKey(Party, on_delete=models.CASCADE)
Quantity=models.IntegerField(null=False)
CheckOutDate=models.DateField(null=False)
CheckInDate=models.DateField(null=True)
Deleted=models.BooleanField(default=0)
objects=models.Manager()
class Meta:
managed=True
db_table='ToolTransaction'
ordering=('CheckOutID',)
def __unicode__(self):
return str(self.CheckOutID) or u''
def get_absolute_url(self):
return reverse("ToolSearch:toolCheckout", kwargs={"pk": self.CheckOutID})
模特:
<form method = 'POST' action=''>
{% csrf_token %}
{{form.as_p}}
<input type = 'submit' class = "button" value = 'Save'/>
模板:
<div class="doc-schedule clearfix">
<p>
<table style="border: 0px;border-style: none">
<tr>
<td><strong>Speciality</strong></td>
<td class="tdPadding"><span>{{ page.dentist_specialty }}</span></td>
</tr>
<tr>
<td><strong>Education</strong></td>
<td class="tdPadding"><span>{{ page.dentist_education }}</span></td>
</tr>
<tr>
<td><strong>Work Days</strong></td>
<td class="tdPadding"><span>{{ page.dentist_workdays }}</span></td>
</tr>
</table>
</p>
</div>
........
非常感谢任何帮助!
答案 0 :(得分:1)
__unicode__()
必须始终返回字符串或unicode。 Party.__unicode__()
没有。要修复,请将返回的值显式转换为字符串:return str(self.PartyID)
答案 1 :(得分:0)
添加这样的方法。
def __unicode__(self):
return u"%i" % self.CheckOutID
文档说:
只要在对象上调用unicode(),就会调用 unicode ()方法。由于Django的数据库后端将返回模型属性中的Unicode字符串,因此通常需要为模型编写 unicode ()方法。