1. 程式人生 > >Django rest framework:__str__ returned non-string (type NoneType) 真正原因

Django rest framework:__str__ returned non-string (type NoneType) 真正原因

問題 field __str__ span 是我 字段 max 一個 self.

出錯原因:

  用戶表是Django中核心的表,當這個表類字段中有一個這樣的函數

def __str__(self):
    return self.name

  在Django用戶表設計時候有個字段容易犯這個失誤,雖然表字段約束沒錯

name = models.CharField(max_length=30, null=True, blank=True, verbose_name=‘姓名‘)

  也就是說這個字段可以為空,也就是說用 __str__ 函數返回時候,為空,什麽都麽有,報類型錯誤

那,如何解決?

  在使用 __str__返回函數時候,指定的字段不能為空,也就是有兩個方式,一個是設置這個字段不能為空,並設置一個默認值,另一個方式是更改一個不為空的返回字段

name = models.CharField(max_length=30, default=‘‘, verbose_name=‘姓名‘)

  

def __str__(self):
    return self.username

總結:

  這個是我用戶表錯誤,本質上問題是__str__不能返回空類型數據,也就是說,這個返回數據不能是空字段的數據,在其他表設計時候,也需要註意這個問題,最好不要指定返回一個為空和default=‘‘數據,雖然default=‘‘是可以返回的

Django rest framework:__str__ returned non-string (type NoneType) 真正原因