db.expando + App Engine + Изменить целочисленное значение свойства на значение с плавающей запятой - PullRequest
0 голосов
/ 06 марта 2012

У меня изначально установлена ​​следующая модель

class Obj (db.Model):
    name = db.StringProperty(required=True)
    rating = db.IntegerProperty(default=0, required=False)

Существуют сущности, уже созданные выше, например:

name = "test1", rating = "3"

Итак, Мне нужно поменять тип рейтинга на float .Я пытался добиться этого с помощью db.Expando

class Obj (db.Expando):
    name = db.StringProperty(required=True)
    rating = db.FloatProperty(default=0, required=False)

Прежде чем я смог получить экземпляр модели Obj, чтобы обновить его до значения с плавающей запятой, я уже получил следующую ошибку:

Рейтинг свойств должен быть плавающим

Сначала я получил эту ошибку, потому что я не использовал db.Expando.Однако после использования db.Expando я предположил, что эта ошибка не должна появиться?Поскольку он может динамически изменять значение, вводить и т. Д., Когда я читаю статьи.

Будучи новичком в db.Expando, мне нужна помощь.Кто-нибудь знает, что случилось?

РЕДАКТИРОВАТЬ

for o in Obj.all():
    a = []
    if o.rating:
        o.rating = float(str(restaurant.rating))
    else:
        o.rating = float(0)    
    a.append(restaurant)

db.put(a)

После кода выше, та же ошибка выскакивает

Свойстворейтинг должен быть плавающим

РЕШЕНИЕ Временно удалил оценку из определения модели и сначала обновил значения до значения с плавающей точкой, а затем добавил новое определение рейтинга с помощью db.FloatProperty

1 Ответ

3 голосов
/ 06 марта 2012
Модель

A db.Expando позволяет добавлять свойства, которые не определены в самом классе; однако любые свойства, которые явно определены в классе, должны иметь правильный тип.

Простое удаление rating из определения модели может помочь вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...