繁体   English   中英

强制转换为Unicode的TypeError:需要字符串或缓冲区

[英]TypeError coercing to Unicode: need string or buffer

在Django项目中,我试图将URL传递给一个Want实例。 注释将应用于求购。 我一直在试图找出这个错误,但是很困惑。

该功能:

     def comment_email(request, comment, **kwargs):
         want = get_object_or_404(Want, id=comment.object_pk)
         url = want.get_absolute_url
         print url

抛出此错误

Environment:

Request Method: POST
Request URL: http://localhost:8000/comments/post/
Django Version: 1.2.3
Python Version: 2.7.0
Installed Applications:
['django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.admin',
 'django.contrib.comments',
 'django.contrib.markup',
 'src',
 'lib.tagging',
 'lib.markdown',
 'lib.avatar',
 'ajaxcomments',
 'south']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware')


Traceback:
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  100.                     response = callback(request, *callback_args, **callback_kwargs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ajaxcomments/utils.py" in wrapped
  57.         return func(*args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view
  76.                     response = view_func(request, *args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/views/decorators/http.py" in inner
  37.             return func(request, *args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/contrib/comments/views/comments.py" in post_comment
  127.         request = request
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/dispatch/dispatcher.py" in send
  162.             response = receiver(signal=self, sender=sender, **named)
File "/Users/emilepetrone/code/apprentice2/src/utils.py" in comment_email
  24.   print url
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/base.py" in __repr__
  344.             u = unicode(self)

Exception Type: TypeError at /comments/post/
Exception Value: coercing to Unicode: need string or buffer, Want found

这是旺旺模型:

     class Want(models.Model):

       pub_date =         models.DateTimeField(default=datetime.now,auto_now_add=True,db_index=True)
       body = models.TextField(default='',max_length=1000)
       body_html = models.TextField(editable=False, blank=True)

       #Metadata
       mentee = models.ForeignKey(User)
       points = models.IntegerField(default=3)
       enable_comments = models.BooleanField(default=True)
       featured = models.BooleanField(default=False)

       #Tags
       tags = TagField(help_text="Autocomplete")

       def get_tags(self):
         return Tag.objects.get_for_object(self)      

       class Meta:
         ordering = ['-pub_date']

       def __unicode__(self):
         return self

       def save(self):
         self.body_html = markdown(self.body)
         super(Want, self).save()

       def get_absolute_url(self):
         return ( { 'object_id': self.id })
       get_absolute_url = models.permalink(get_absolute_url)

谢谢您的帮助!

我认为问题是

def __unicode__(self):
    return self

它应返回unicode字符串而不是“ Want”实例。 我不确定您要在那里做什么-也许是“ self.id”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM