赞
踩
错误信息如下:
此时点击右上角的admin,把帐号退掉,然后在进入对应页面就可以了
如果不退出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."), }, )
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。