【发布时间】:2012-09-11 21:35:38
【问题描述】:
Deal 模型中的 deal_instance_name 似乎存在 unicode 问题。
上面写着:
coercing to Unicode: need string or buffer, __proxy__ found
异常发生在这一行:
return smart_unicode(self.deal_type.deal_name) + _(u' - Set No.') + str(self.set)
如果我删除 smart_unicode(self.deal_type.deal_name),这条线会起作用,但为什么?
当时在 Django 1.1 中,有人在 Stackoverflow 上遇到了同样的问题,我已经尝试了 unicode() 和新的 smart_unicode(),没有任何乐趣。
请问我会遗漏什么?
class Deal(models.Model):
def __init__(self, *args, **kwargs):
super(Deal, self).__init__(*args, **kwargs)
self.deal_instance_name = self.__unicode__()
deal_type = models.ForeignKey(DealType)
deal_instance_name = models.CharField(_(u'Deal Name'), max_length=100)
set = models.IntegerField(_(u'Set Number'))
def __unicode__(self):
return smart_unicode(self.deal_type.deal_name) + _(u' - Set No.') + smart_unicode(self.set)
class Meta:
verbose_name = _(u'Deal')
verbose_name_plural = _(u'Deals')
交易类型:
class DealType(models.Model):
deal_name = models.CharField(_(u'Deal Name'), max_length=40)
deal_description = models.TextField(_(u'Deal Description'), blank=True)
def __unicode__(self):
return smart_unicode(self.deal_name)
class Meta:
verbose_name = _(u'Deal Type')
verbose_name_plural = _(u'Deal Types')
【问题讨论】:
标签: django unicode unicode-string