类型对象 '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 条记录,然后 然后 担心优化整个集合的性能。
我在 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 条记录,然后 然后 担心优化整个集合的性能。