Python 从django数据库检索数据并显示在表中

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

我正在尝试从django中的db检索数据。我想在表格中显示它。 我得到一个错误,因为:\

强制使用Unicode:需要字符串或缓冲区,找到TransType

my models.py文件中有两个模型:

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%}