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ですがStringProperty,、次のエラーが表示されます。

 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 に答える