Zum abrufen von Daten aus dem django-Datenbank und die Anzeige in der Tabelle
Ich versuche zum abrufen von Daten aus db in django. Ich möchte in einer Tabelle.
Ich erhalte eine Fehlermeldung wie:\
Nötigung zu Unicode: benötigen Sie string oder buffer, TransType gefunden
Gibt es zwei Modelle in meiner Models.py Datei:
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`
Meine views.py Datei
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))
Meine url.py Datei
url(r'^updatetrans/$', 'booki.account.views.updatetrans', name='updatetrans'),
Meine updatetrans.html Datei
{% 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>
Plz help....
Traceback
Umgebung:
Request-Methode: 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
- Sie benötigen zum anzeigen den vollen traceback. Wo ist dann die Ausnahme passiert?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den traceback zeigt, dass der Fehler kommt in Ihrem Trans-Modell ist
__unicode__
Methode. Wie der Fehler sagt, Sie müssen tatsächlich zurück unicode von dieser Methode, aber Sie sind die Rückkehr der im Zusammenhang TransType.Könnte man dieses Problem beheben durch explizite Konvertierung zu unicode, die in dieser Methode:
aber Sie sollten wahrscheinlich wählen Sie eine bessere string-Darstellung Ihrer Daten: es sind noch zu viele Trans-Objekte mit dem gleichen TransType, so dass Ihre unicode sollte, zwischen Ihnen zu unterscheiden, vielleicht auch zeigt der script-Bereich.
Bekam ich die Antwort. Es ist in Ordnung jetzt.
Views.py:
displaytrans.html:
url.py: