TypeError at /goods/ __str__ returned non-string (type NoneType)

今天在学习Django项目时,使用Djangorestframework出现了以下错误:
TypeError at /goods/ __str__ returned non-string (type NoneType)
TypeError at /goods/ __str__ returned non-string (type NoneType)

问题原因

由于user的model的name参数可以为空导致的

class UserProfile(AbstractUser):
    """
    用户
    """
    name = models.CharField(max_length=30, null=True, blank=True, verbose_name="姓名")
    
    class Meta:
        verbose_name = "用户"
        verbose_name_plural = "用户"     #复数时

    def __str__(self):
        return self.name

解决方式

  1. 我出现这个错误的时候登录了xadmin的管理员账号,只要把账户登出就能快速解决。
  2. 为防止以后出现错误,最佳解决方式是直接修改__str__的返回值。
    def __str__(self):
        if self.name:
            return self.name
        else:
            return self.username  # 父类AbstractUser原本的属性