Django模型的__unicode__方法中的TypeError

时间:2012-04-27 20:40:06

标签: python django unicode django-models

我在django中与__unicode__()混淆了一下。我还是个新手。

我有这段代码:

models.py

class Order(models.Model):
    order_num = models.IntegerField(verbose_name="OR Number")
    order_date = models.DateTimeField(auto_now_add=True,verbose_name="OR Date")
    customer = models.ForeignKey(User)

    def __unicode__(self):
        return self.order_num

我在管理员方面注册。当我尝试添加订单时出现错误:

TypeError at /admin/store/order/add/
coercing to Unicode: need string or buffer, int found

我将在方法__unicode__(self)上声明什么?

很明显我的田地上没有字符串。我怎样才能声明缓冲区?

任何人都有另一个答案..请帮助..谢谢。

2 个答案:

答案 0 :(得分:4)

__unicode__需要返回unicode个对象。

您看到的错误是因为只能自动转换字符串或缓冲区协议对象(显式转换它们仍然更好)。

对于内置Python类型或任何具有自己的__unicode__方法的用户定义类,您只需在其上调用unicode

def __unicode__(self):
    return unicode(self.order_num)

答案 1 :(得分:0)

您应该声明__unicode__这样的功能:

def __unicode__(self):
    return u'%s' % self.order_num

Other model instance methods

中的更多信息