我有以下内容:
if id_puertas[x]:
puerta = Puerta.get_by_id(int(id_puertas[x]))
puerta.ubicacion = ubicacion_puertas[x],
puerta.ancho = float(ancho_puertas[x]),
puerta.marco = float(marco_puertas[x]),
puerta.alto = float(alto_puertas[x]),
puerta.giro = giro_puertas[x],
puerta.condena = True if condena_puertas[x] == 'Si' else False,
puerta.extra = extra_puertas[x]
else:
puerta = Puerta(
medicion = medicion.key().id(),
ubicacion = ubicacion_puertas[x],
ancho = float(ancho_puertas[x]),
marco = float(marco_puertas[x]),
alto = float(alto_puertas[x]),
giro = giro_puertas[x],
condena = True if condena_puertas[x] == 'Si' else False,
extra = extra_puertas[x]
)
puerta.put()
同一表单将id_puerta
作为数字发送,或发送空白。如果是数字,则更新数据存储区中的实体。如果它是空白的,则创建一个新实体。
创作完美无缺。
但是,如果我重新发送相同的表单(即使没有修改),更新会在第一次分配时阻塞。
ubicacion_puertas[x]
是一个字符串(创建时的字符串与更新时相同),puerta.ubicacion
是StringProperty,
但我收到以下错误:
BadValueError: Property ubicacion must be a str or unicode instance, not a tuple
在调试器中,我清楚地看到ubicacion_puertas[0]
是u'Salon'。所以我无法理解这个错误。
答案 0 :(得分:4)
当你这样做时:
puerta.ubicacion=ubicacion_puertas[x],
您将元组存储在ubicacion
的{{1}}属性中:另一种更易读的形式是:
puerta
你确定这是你想要的吗?只需摆脱puerta.ubicacion=(ubicacion_puertas[x],)
来存储str
,
(其他属性也一样......)