1

GAE 快把我逼疯了。

我有以下内容:

    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是 aStringProperty,但我收到以下错误:

 BadValueError: Property ubicacion must be a str or unicode instance, not a tuple

在调试器中,我清楚地看到那ubicacion_puertas[0]是 u'Salon'。所以我无法理解这个错误。

4

1 回答 1

4

当你这样做时:

puerta.ubicacion=ubicacion_puertas[x],

您在 : 的ubicacion属性中存储了一个元组,puerta另一种更易读的形式是:

puerta.ubicacion=(ubicacion_puertas[x],)

你确定这是你想要的吗?只需摆脱,存储 str

puerta.ubicacion = ubicacion_puertas[x]

(其他属性也是如此……)

于 2012-10-05T09:48:45.653 回答