我想从文件中读取一些数据以快速创建许多测试帐户.我更喜欢使用bulk_create方法,因为这对于向模型添加许多记录来说通常要快得多.但是,当使用带有Django用户模型的bulk_create方法时,密码没有正确散列,这意味着我无法以用户身份登录和注销.
User.objects.bulk_create([
User(
username=name,
email='sample@email.co.uk',
password='Sample&Password!',
is_active=True,
) for name in f.read().splitlines()
])
Run Code Online (Sandbox Code Playgroud)
Django admin在每个用户的密码字段中显示以下错误
无效的密码格式或未知的散列算法.
然而,第二种方法继续工作(尽管速度慢得多).
for name in f.read().splitlines():
User.objects.create_user(
name,
'sample@email.co.uk',
password="Sample&Password!"
).save()
Run Code Online (Sandbox Code Playgroud)
我的问题是,有没有办法在Django中一次性批量创建用户.Django出于某种原因是出于某种原因还是这个错误?
小智 11
使用make_password.这可确保散列密码存储在数据库中.如果make_password太慢,请看这个
from django.contrib.auth.hashers import make_password
User.objects.bulk_create([
User(
username=name,
email='sample@email.co.uk',
password=make_password('Sample&Password!'),
is_active=True,
) for name in f.read().splitlines()
])
Run Code Online (Sandbox Code Playgroud)