Django2.0.6 user.save()保存的时候 报 is_superuser cannot be null解决办法

小鱼儿 2022-02-24 07:54 273阅读 0赞

今天突然忘记了管理员的密码 一下子等不进去了。所以就通过之前写好的修改密码的页面进行修改。但是代码执行到save()的时候 竟然报 is_superuser cannot be null 的错 可是 这不是默认0么?

检查数据库确实数据是0 百思不得其解。

回想起来我家里写的项目也是碰到这个问题。想来想去 问题应该是出在这货身上:

mysql.connector.django

目前不知道是这货BUG还是咋样的 它会将数据库表中的0当做null来处理 我也是醉了

https://dev.mysql.com/doc/connector-python/en/connector-python-django-backend.html

我更换为Pymysql

安装: pip3 install pymysql

在项目下的__init__.py中导入pymysql

  1. import pymysql
  2. pymysql.install_as_MySQLdb()

在setting.py中添加

  1. DATABASES = {
  2. 'default': {
  3. 'ENGINE': 'django.db.backends.mysql',
  4. 'NAME': 'contract_manage',
  5. 'USER': 'root',
  6. 'PASSWORD': 'XXX',
  7. 'HOST': '127.0.0.1',
  8. 'PORT': '3306'
  9. }
  10. }

然后就一切顺利了 干!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

对了 这里顺便说下 Xadmin添加用户时或更改用户密码时不加密的问题。只需要在 user的Model下 自定义一个save()即可:

  1. def save(self, *args, **kwargs):
  2. self.password = make_password(self.password)
  3. return super(UserProfile, self).save(*args, **kwargs)

发表评论

表情:
评论列表 (有 0 条评论,273人围观)

还没有评论,来说两句吧...

相关阅读