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

时间:2015-01-28 20:05:30

标签: django csv

我在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 = []

当我看到管理员时,它只会创建&#34; 488&#34;用户,永远不会显示打印&#34; listo&#34;为什么会这样?

1 个答案:

答案 0 :(得分:1)

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

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