__str__ 尝试在 Django 管理菜单中保存时返回 non-string(类型 NoneType)错误
__str__ returned non-string (type NoneType) error when trying to save in Django admin menu
我已经为我的项目创建了自定义用户模型。我正在使用 python-social-auth 来登录用户。登录并将用户数据导入数据库工作正常,但是当我转到管理面板手动更改某些内容时,我收到此错误。即使我没有更改任何内容,只需单击保存,我也会得到相同的结果。
为什么会这样?
Models.py
from django.db import models
from django.conf import settings
from django.contrib.auth.models import AbstractUser
from .managers import CustomUserManager
# Create your models here.
class CustomUser(AbstractUser):
username = models.CharField(max_length=32, blank=True, null=True)
name = models.CharField(max_length=200, unique=True)
steam_id = models.CharField(max_length=17, unique=True, blank=True, null=True, db_column='steam_id')
player = models.TextField(null=True)
user_coins = models.FloatField(default=0.00)
is_active = models.BooleanField(default=True, db_column='status')
is_staff = models.BooleanField(default=False, db_column='isstaff')
is_superuser = models.BooleanField(default=False, db_column='issuperuser')
USERNAME_FIELD = "name"
REQUIRED_FIELDS = []
objects = CustomUserManager()
def has_perm(self, perm, obj=None):
return self.is_superuser
def has_module_perms(self, app_label):
return self.is_superuser
这是因为您还没有在 CustomUser 模型上定义 __str__()
方法
在您使用 Customuser 模型的情况下,return self.username
为了清楚起见,IMO 在使用 django-admin __str__()
方法时对任何模型都是强制性的
在此处阅读更多内容:https://docs.djangoproject.com/en/4.0/ref/models/instances/#str
我已经为我的项目创建了自定义用户模型。我正在使用 python-social-auth 来登录用户。登录并将用户数据导入数据库工作正常,但是当我转到管理面板手动更改某些内容时,我收到此错误。即使我没有更改任何内容,只需单击保存,我也会得到相同的结果。
为什么会这样?
Models.py
from django.db import models
from django.conf import settings
from django.contrib.auth.models import AbstractUser
from .managers import CustomUserManager
# Create your models here.
class CustomUser(AbstractUser):
username = models.CharField(max_length=32, blank=True, null=True)
name = models.CharField(max_length=200, unique=True)
steam_id = models.CharField(max_length=17, unique=True, blank=True, null=True, db_column='steam_id')
player = models.TextField(null=True)
user_coins = models.FloatField(default=0.00)
is_active = models.BooleanField(default=True, db_column='status')
is_staff = models.BooleanField(default=False, db_column='isstaff')
is_superuser = models.BooleanField(default=False, db_column='issuperuser')
USERNAME_FIELD = "name"
REQUIRED_FIELDS = []
objects = CustomUserManager()
def has_perm(self, perm, obj=None):
return self.is_superuser
def has_module_perms(self, app_label):
return self.is_superuser
这是因为您还没有在 CustomUser 模型上定义 __str__()
方法
在您使用 Customuser 模型的情况下,return self.username
为了清楚起见,IMO 在使用 django-admin __str__()
方法时对任何模型都是强制性的
在此处阅读更多内容:https://docs.djangoproject.com/en/4.0/ref/models/instances/#str