Skip to main content
 首页 » 编程设计

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

2025年05月04日19leader

我正在尝试从 Django 中的数据库中检索数据。我想在表格中显示它。 我收到一个错误:\

强制转换为 Unicode:需要字符串或缓冲区,找到 TransType

我的 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` 

我的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> 

请帮忙....

回溯

环境: 请求方式:GET

enter code here 
 
 
Django Version: 1.3 
Python Version: 2.7.3 
Installed Applications: 
['django.contrib.auth', 
 'django.contrib.contenttypes', 
 'django.contrib.sessions', 
 'django.contrib.sites', 
 'django.contrib.admin', 
 'django.contrib.messages', 
 'south', 
 'booki.editor', 
 'booki.account', 
 'booki.reader', 
 'booki.portal', 
 'booki.messaging', 
 'sputnik', 
 'booktypecontrol'] 
 Installed Middleware: 
 ('django.middleware.common.CommonMiddleware', 
 'django.contrib.sessions.middleware.SessionMiddleware', 
 'django.middleware.locale.LocaleMiddleware', 
 'django.contrib.auth.middleware.AuthenticationMiddleware', 
 'django.middleware.transaction.TransactionMiddleware', 
 'django.contrib.messages.middleware.MessageMiddleware') 
 
 Traceback: 
 File "/home/ttt/abc_booktype/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 111. response = callback(request, *callback_args, **callback_kwargs) 
 
 File "/home/ttt/abc_booktype/Booktype/lib/booki/account/views.py" in updatetrans 808.print bookdata 
 
 File "/home/ttt/abc_booktype/local/lib/python2.7/site-packages/django/db/models/query.py" in __repr__72. return repr(data) 
 
 File "/home/ttt/abc_booktype/local/lib/python2.7/site-packages/django/db/models/base.py" in __repr__370. u = unicode(self) 
 
 Exception Type: TypeError at /accounts/updatetrans/ 
 Exception Value: coercing to Unicode: need string or buffer, TransType found 

请您参考如下方法:

我得到了答案。它现在工作正常。

Views.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 

displaytrans.html:

<!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.py:

url(r'^displaytrans/$', 'booki.account.views.displaytrans', name='displaytrans'),