Python 从django数据库检索数据并显示在表中
我正在尝试从django中的db检索数据。我想在表格中显示它。 我得到一个错误,因为:\ 强制使用Unicode:需要字符串或缓冲区,找到TransType my models.py文件中有两个模型:Python 从django数据库检索数据并显示在表中,python,django,sqlite,Python,Django,Sqlite,我正在尝试从django中的db检索数据。我想在表格中显示它。 我得到一个错误,因为:\ 强制使用Unicode:需要字符串或缓冲区,找到TransType my models.py文件中有两个模型: class TransType(models.Model): name = models.TextField() created = models.DateTimeField(auto_now_add = True) updated = models.DateTimeField(aut
class TransType(models.Model):
name = models.TextField()
created = models.DateTimeField(auto_now_add = True)
updated = models.DateTimeField(auto_now = True)
def __unicode__(self):
return self.name
class Trans(models.Model):
transtype = models.ForeignKey(TransType)
script = models.CharField(max_length=200)
created = models.DateTimeField(auto_now_add = True)
updated = models.DateTimeField(auto_now = True)
class Meta:
unique_together = (("transtype", "script"),)
def __unicode__(self):
return self.transtype`
My views.py文件
def updatetrans(request):
json_data=open('/home/ttt/Ali/a.json').read()
data = json.loads(json_data)
for pk, pv in data.iteritems():
for k,v in pv.iteritems():
try:
trans_type = TransType.objects.get_or_create(name=k)
trans = Trans()
trans.transtype_id = trans_type[0].id
if isinstance(pv[k], basestring):
script = pv[k]
else:
print "****** List ****"
script = pv[k][1]
trans.script = script
trans.save()
print " Inserted ==>", script
except Exception, e:
print e
#print "Not inserted ==>", pv[k][1]
pass
#return HttpResponse("Done")
info = TransType.objects.all()
info2 = Trans.objects.all()
bookdata = { "details" : info, "details" : info2 }
print bookdata
return render_to_response("account/updatetrans.html", bookdata, context_instance=Context(request))
我的url.py文件
url(r'^updatetrans/$', 'booki.account.views.updatetrans', name='updatetrans'),
我的updatetrans.html文件
{% load i18n %}
<!doctype html>
<html>
<body>
<button type="button" onclick="alert('Hello world!')">Click Me!</button>
<table border="1" style="width:800px">
<tr><td>
{% for s in details %}
{{ s.script }}
{% endfor %}
</td>
<td>
{% for n in detail %}
{{ n.name }}
{% endfor %}
</td>
</tr>
</table>
</body>
</html>
回溯显示错误出现在Trans模型的
\uuuuuUnicode\uuuu
方法中。正如错误所说,实际上需要从该方法返回unicode,但返回的是相关的TransType
您可以通过在该方法中显式转换为unicode来解决此问题:
return unicode(self.transtype)
但您可能应该选择一种更好的数据字符串表示法:将有许多Trans对象具有相同的TransType,因此您的unicode应该通过显示脚本字段来区分它们。我得到了答案。它现在运转良好 视图。py:
def displaytrans(request):
TransType.objects.all()
info = TransType.objects.all()
info2 = Trans.objects.all()
print info
bookdata = { "detail" : info, "details" : info2 }
print bookdata
resp = render_to_response("account/displaytrans.html", bookdata, context_instance=Context(request))
return resp
<!doctype html>
<html>
<body>
<table border="1" style="width:800px">
<tr>
<td> {% for s in details %} </td>
<td> {{ s.script }} </td>
</tr>
<tr>
<td> {{ s.transtype_id}} </td>
{% endfor %}
</tr>
</table>
</body>
</html>
url(r'^displaytrans/$', 'booki.account.views.displaytrans', name='displaytrans'),
displaytrans.html:
def displaytrans(request):
TransType.objects.all()
info = TransType.objects.all()
info2 = Trans.objects.all()
print info
bookdata = { "detail" : info, "details" : info2 }
print bookdata
resp = render_to_response("account/displaytrans.html", bookdata, context_instance=Context(request))
return resp
<!doctype html>
<html>
<body>
<table border="1" style="width:800px">
<tr>
<td> {% for s in details %} </td>
<td> {{ s.script }} </td>
</tr>
<tr>
<td> {{ s.transtype_id}} </td>
{% endfor %}
</tr>
</table>
</body>
</html>
url(r'^displaytrans/$', 'booki.account.views.displaytrans', name='displaytrans'),
您需要显示完整的回溯。那个例外发生在哪里?谢谢。。但是现在我得到了一个错误:TemplateDoesNotExist位于/accounts/updaterans/Hey,我删除了该文件并再次将该文件保存在account目录中。并在要测试的文件中添加了一个按钮。现在按钮显示,但记录不显示。现在没有错误。我正在终端上获取输出。但不在页面上。是否有问题,因为有两个不同的表,而我正试图从一个表中提取一个字段,从另一个表中提取一个字段?不,这是因为您的模板实际上不包含任何代码来显示任何字段。我将字段设置为:{%for script in details%}{%endfor%}{%for name in details%}{%endfor%}