You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django 1.11用户填充脚本问题求助:姓名重复且单次仅生成1个用户

Django 1.11 数据填充脚本问题排查与修复

我帮你梳理了下这份填充脚本,确实有两处明确的问题导致了你遇到的情况:

问题1:用户名字与姓氏完全相同

你看这段核心代码:

user = User.objects.get_or_create(first_name = fake_last_name,last_name= fake_last_name,email = fake_email)[0]

这里犯了个低级笔误——把first_name的值错写成了fake_last_name,而不是正确的fake_first_name。这样一来,生成的用户的名和姓都会是拆分后的姓氏部分,自然就完全相同了。

问题2:每次仅能填充一个用户

这是因为你用了get_or_create()方法,这个方法的逻辑是先尝试根据给定的条件查询用户,如果不存在再创建新用户。如果Faker生成的信息出现重复(虽然概率不高,但确实可能),或者你的User模型对某些字段有唯一性限制,就会导致后续循环只返回已存在的用户,而不是创建新的。

如果你的需求是生成指定数量的新用户(而不是避免重复),直接用create()方法会更合适;如果你确实需要去重,可以调整get_or_create()的查询条件(比如只根据唯一的email来判断)。

修复后的完整脚本

import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE','ProTwo.settings')
import django
django.setup()
from AppTwo.models import User
from faker import Faker

fakegen = Faker()

def populate(N=5):
    for entry in range(N):
        # 拆分生成的姓名,获取名和姓
        fake_name = fakegen.name().split()
        fake_first_name = fake_name[0]
        fake_last_name = fake_name[1]
        fake_email = fakegen.email()
        
        # 修复笔误,使用正确的名和姓;提供两种实现方式供你选择
        # 方式1:确保不重复(基于唯一的email判断)
        user, created = User.objects.get_or_create(
            email=fake_email,  # 用唯一的email作为查询条件
            defaults={
                'first_name': fake_first_name,
                'last_name': fake_last_name
            }
        )
        # 方式2:单纯生成新用户,无需去重,直接创建
        # user = User.objects.create(
        #     first_name=fake_first_name,
        #     last_name=fake_last_name,
        #     email=fake_email
        # )

if __name__ == '__main__':
    print('populating databases')
    populate(20)
    print('populated')

额外小提示

如果fakegen.name().split()偶尔出现只有一个部分的情况(比如生成了单字姓名),可能会触发索引错误。可以加个简单的判断处理这种情况:

fake_name = fakegen.name().split()
if len(fake_name) >= 2:
    fake_first_name = fake_name[0]
    fake_last_name = fake_name[1]
else:
    fake_first_name = fake_name[0]
    fake_last_name = ''  # 或者设置一个默认姓氏比如'Unknown'

内容的提问来源于stack exchange,提问作者Prometheus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 11:57:39