在Django项目中,我有以下脚本来创建admin
帐户:
User.objects.all().delete()
admin = User()
admin.username = 'admin'
admin.password = admin.set_password('admin')
admin.save()
但是我收到了错误消息:
psycopg2.IntegrityError: null value in column "password" violates not-null constraint
为什么?
答案 0 :(得分:5)
来自the docs:
set_password(raw_password): 将用户的密码设置为给定的原始字符串,并处理密码哈希。
它为您设置密码,然后返回None
,因此请勿将其分配回user.password
。换句话说,就是这样做:
admin.username = 'admin'
admin.set_password('admin')
admin.save()
答案 1 :(得分:4)
.set_password()
已经设置了给定用户的密码,因此不会返回任何内容。因此,您应该这样做:
>>> admin.set_password('admin')
>>> admin.save()
假设您要创建一个拥有所有权限的用户,为什么不使用.create_superuser()
代替:
>>> User.objects.create_superuser(username="admin", password="admin", email=None)
因此,您不必手动将.is_superuser
和.is_staff
设置为True
。