Django筆記 ”coercing to Unicode: need string or buffer, int found“
阿新 • • 發佈:2019-02-04
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 物件。通常,我們不必擔心編碼是否正確,後臺會處理的很好。