类型对象 'Usuario' 没有属性 'id'

type object 'Usuario' has no attribute 'id'

我在 Django 中上传一个 .csv 文件,我将 500 行 csv 分组并使用 bulk_create 上传它们,但我收到此错误...

这是我正在做的事情:

personas = []
Aux_USER = []
reader = csv.reader(path)
reader.next()
row_count = sum(1 for row in reader)
reader = csv.reader(path)
reader.next()
for row in reader:
    if not Usuario.objects.filter(casillero=if_empty(row[0])).exists():
        clave = "%32x" % random.getrandbits(128)
        hash = clave[0: 6]
        if len(row[4])>30 or len(row[3]) > 30:
            ErrorLog.objects.create(casillero=row[4])
        else:
            usr = User.objects.create(
                username=row[1],
                first_name=row[3],
                last_name=row[4],
                password=hash,
                email=row[5],
            )
            if not (row[5] == ""):
               # usuario_aux(
                usuario_aux.user=usr.id
                usuario_aux.clave=hash
                usuario_aux.correo=False
               # )

              #  usuario_aux.objects.create(
              #      user=usr.id,
              #      clave=hash,
              #      correo=True
              #  )
                #person_user_email(
                Usuario.user=usr.id
                Usuario.casillero=if_empty(row[0])
                Usuario.cuenta_individual=row[1]
                Usuario.integrante=row[2]
                Usuario.telefono=row[6]
                Usuario.plan_inscripcion=row[9]
                Usuario.estado=row[10]
                Usuario.municipio=row[11]
                Usuario.parroquia=row[12]
                Usuario.ciudad=row[13]
                Usuario.urbanizacion=row[14]
                Usuario.avenida=row[15]
                Usuario.tipo_inmueble=row[16]
                Usuario.codigo_postal=if_empty(row[17])
                Usuario.status=row[29]
                usr = None

                #    )
            else:
               # usuario_aux(
                usuario_aux.user=usr.id
                usuario_aux.clave=hash
                usuario_aux.correo=False
               # )
                #usuario_aux.objects.create(user=usr.id, clave=hash)
                #person_user_email(
                Usuario.user=usr.id
                Usuario.casillero=if_empty(row[0])
                Usuario.cuenta_individual=row[1]
                Usuario.integrante=row[2]
                Usuario.telefono=row[6]
                Usuario.plan_inscripcion=row[9]
                Usuario.estado=row[10]
                Usuario.municipio=row[11]
                Usuario.parroquia=row[12]
                Usuario.ciudad=row[13]
                Usuario.urbanizacion=row[14]
                Usuario.avenida=row[15]
                Usuario.tipo_inmueble=row[16]
                Usuario.codigo_postal=if_empty(row[17])
                Usuario.status=row[29]
                usr = None
                #)
        personas.append(Usuario)
        Aux_USER.append(usuario_aux)
        n_objects = len(personas)
        if row_count < 500:
            Usuario.objects.bulk_create(personas)
            usuario_aux.bulk_create(Aux_USER)
            print "listo"
            personas = []

        if n_objects == 500:
            Usuario.objects.bulk_create(personas)
            usuario_aux.bulk_create(Aux_USER)
            print "500 creados"
            row_count -= 500
            personas = []

当我看到管理员时,它只创建“488”个用户,并且从不显示打印 "listo"为什么会这样?

create() 方法会在您创建记录时保存它。在很多情况下这是一个很好的便利,但它完全违背了使用 bulk_create() 的目的。

我认为这不是此代码的唯一问题,但它解释了如何在不打印的情况下保存 488 条记录 "listo"。当您重构它时,我建议您专注于正确处理 CSV 中的前 10 条记录,然后 然后 担心优化整个集合的性能。