使用ImportExport Module Django为csv中的用户创建用户登录名和密码



我想使用ImportExport模块Django使用CSV文件创建一个新用户的登录名和随机/相同的密码。我试过很多例子,但都没有用。你能提出什么建议吗?我甚至试图在导入csv文件中创建密码字段。让我知道你可以分享的任何教程/链接来实现这一点。

如果您想用伪数据填充数据库,python中有一个名为faker的模块。下面是一个小代码片段,展示了如何使用faker:

import os
# Configure settings for project
# Need to run this before calling models from application!
os.environ.setdefault('DJANGO_SETTINGS_MODULE','(YOUR DJANGO PROJECT).settings')
import django
# Import settings
django.setup()
import random
from (YOUR DJANGO APP).models import User
from faker import Faker
fakegen = Faker()
def populate(N=5):
for entry in range(N):
# Create Fake Data for entry
fake_name = fakegen.name().split()
fake_first_name = fake_name[0]
fake_last_name = fake_name[1]
fake_email = fakegen.email()
# Create new User Entry
user = User.objects.get_or_create(first_name=fake_first_name,
last_name=fake_last_name,
email=fake_email)[0]

if __name__ == '__main__':
print("Populating the databases...")
populate(20)
print('Populating Complete')

django导入导出包含几个钩子,您可以在插入数据库之前使用这些钩子来操作数据。这似乎是为每个用户生成随机密码的理想方式。

您可以将其与Django的make_random_password()函数相结合。在导入电子表格中设置密码似乎不是一个好主意,但也许出于某种原因您需要这样做。

您需要创建自己的Resource子类,并覆盖before_save_instance(),例如:

class UserResource(resources.ModelResource):
def before_save_instance(self, instance, using_transactions, dry_run):
pw = User.objects.make_random_password()
instance.set_password(pw)
class Meta:
model = User
fields = ('id', 'username', 'password')
import_id_fields = ['id']

最新更新