Django rest framework 返回錯誤信息 __str__ returned non-string (type NoneType)


問題如下

解決方法:

方法1.點擊右上角的admin,把帳號退掉,然后在進入對應頁面就可以了

方法2.不退出admin賬號的話,我們看到在自己寫的users模型中 替換了django自帶的AbstractUser,然后又設置了name可以為空,所以返回non-string

在str的函數中,將返回值設置成AbstractUser里面的username就好了

apps.users.models源碼:

from django.contrib.auth.models import AbstractUser

class UserProfile(AbstractUser):
    """
    用戶
    """
    # CharField 一定要加max_length參數,說明這個字段的最大長度
    name = models.CharField(max_length=30, null=True, blank=True, verbose_name="姓名")
    birthday = models.DateField(null=True, blank=True, verbose_name="出生年月")
    gender = models.CharField(max_length=6, choices=(("male", u"男"),("female", u"女")),default="female", verbose_name="性別")
    mobile = models.CharField(max_length=11, verbose_name="電話")
    email = models.EmailField(max_length=100, null=True, blank=True, verbose_name="郵箱")

    class Mate:
        verbose_name = "用戶"
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.username

django.contrib.auth.models.AbstractUser源碼:

class AbstractUser(AbstractBaseUser, PermissionsMixin):
    """
    An abstract base class implementing a fully featured User model with
    admin-compliant permissions.

    Username and password are required. Other fields are optional.
    """
    username_validator = UnicodeUsernameValidator() if six.PY3 else ASCIIUsernameValidator()

username = models.CharField(
    _('username'),
    max_length=150,
    unique=True,
    help_text=_('Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.'),
    validators=[username_validator],
    error_messages={
        'unique': _("A user with that username already exists."),
    },
)

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM