[英]django model with only one CharField is not JSON serializable
我有一个非常基本的“地方”模型:
from django.db import models
class Place(models.Model):
name = models.CharField(max_length=100)
def __unicode__(self):
return self.name
我正在尝试使用该应用程序对其进行审查: https : //github.com/diefenbach/django-reviews
当尝试向某个Place对象添加评论时,在应用程序的视图中https://github.com/diefenbach/django-reviews/blob/master/reviews/views.py ,它达到te'save'方法并实际上保存了记录在数据库中。 但是,它引发以下TypeError:
Environment:
Request Method: POST
Request URL: http://ec2-54-77-118-44.eu-west-1.compute.amazonaws.com:5000/reviews/add/11/1
Django Version: 1.6.5
Python Version: 2.7.6
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'south',
'places',
'reviews')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware')
Traceback:
File "/home/ubuntu/webapps/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
199. response = middleware_method(request, response)
File "/home/ubuntu/webapps/local/lib/python2.7/site-packages/django/contrib/sessions/middleware.py" in process_response
38. request.session.save()
File "/home/ubuntu/webapps/local/lib/python2.7/site-packages/django/contrib/sessions/backends/db.py" in save
57. session_data=self.encode(self._get_session(no_load=must_create)),
File "/home/ubuntu/webapps/local/lib/python2.7/site-packages/django/contrib/sessions/backends/base.py" in encode
87. serialized = self.serializer().dumps(session_dict)
File "/home/ubuntu/webapps/local/lib/python2.7/site-packages/django/core/signing.py" in dumps
88. return json.dumps(obj, separators=(',', ':')).encode('latin-1')
File "/usr/lib/python2.7/json/__init__.py" in dumps
250. sort_keys=sort_keys, **kw).encode(obj)
File "/usr/lib/python2.7/json/encoder.py" in encode
207. chunks = self.iterencode(o, _one_shot=True)
File "/usr/lib/python2.7/json/encoder.py" in iterencode
270. return _iterencode(o, 0)
File "/usr/lib/python2.7/json/encoder.py" in default
184. raise TypeError(repr(o) + " is not JSON serializable")
Exception Type: TypeError at /reviews/add/11/1
Exception Value: <Place: Teteria India> is not JSON serializable
我不明白,如果我仍然不使用任何AJAX或JSON,并且据我所见,评论应用程序的视图都看不到,为什么会引发此错误。 它与表格有关吗?
而且无论如何,只有一个CharField的模型不能JSON序列化? 我必须提供序列化吗?
谢谢!
在第148行,它将object
存储在会话中
request.session["last-rated-object"] = object
然后执行重定向到reviews_thank_you的视图
def thank_you(request, template_name="reviews/thank_you.html"):
"""Displays a thank you page.
"""
if request.session.has_key("last-rated-object"):
object = request.session.get("last-rated-object")
del request.session["last-rated-object"]
else:
object = None
return render_to_response(template_name, RequestContext(request, {
"object" : object,
}))
它返回的object
没有序列化它,我认为这是问题所在。 您可以编辑该视图以返回object
的序列化版本吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.