1. 程式人生 > >Django筆記 ”coercing to Unicode: need string or buffer, int found“

Django筆記 ”coercing to Unicode: need string or buffer, int found“

def unicode(self):
return self.id
unicode() 方法可以進行任何處理來返回對一個物件的字串表示。 Publisher和Book物件的unicode()方法簡單地返回各自的名稱和標題,
Author物件的unicode()方法則稍微複雜一些,它將first_name和last_name欄位值以空格連線後再返回。
unicode()的唯一要求就是它要返回一個unicode物件 如果__unicode__() 方法未返回一個Unicode物件,而返回比如說一個整型數字,
那麼Python將丟擲一個TypeError 錯誤,並提示:”coercing to Unicode: need string or buffer, int found” 。

class Student(models.Model):
    s_id = models.BigIntegerField(primary_key=True, blank=False, null=False)
    s_name = models.CharField(max_length= 50, blank=False, null=False)
    s_age = models.SmallIntegerField(blank=False,null=False)
    s_gender = models.CharField(max_length=10, blank=False, null=False
) profession = models.ForeignKey(Profession, blank=False, null=False) _class = models.ForeignKey(Class, blank=False, null=False) s_addr = models.CharField(max_length=80, blank=False, null=False) def __unicode__(self): return self.s_id #返回的是整型 導致報錯

這裡寫圖片描述

把 return self.id 改為 return str(self.s_id) 或者返回name
儲存成功

這裡寫圖片描述

unicode物件就是一個Python字串.
Unicode物件並沒有編碼。它們使用Unicode,一個一致的,通用的字元編碼集。 當你在Python中處理Unicode物件的時候,你可以直接將它們混合使用和互相匹配而不必去考慮編碼細節。
Django 在其內部的各個方面都使用到了 Unicode 物件。 模型 物件中,檢索匹配方面的操作使用的是 Unicode 物件,檢視 函式之間的互動使用的是 Unicode 物件,
模板的渲染也是用的 Unicode 物件。通常,我們不必擔心編碼是否正確,後臺會處理的很好。