Сериализация ReferenceProperty в хранилище данных Appengine для JSON - PullRequest
1 голос
/ 05 января 2011

Я использую следующий код для сериализации моего хранилища данных appengine в JSON

class DictModel(db.Model):
    def to_dict(self):
        return dict([(p, unicode(getattr(self, p))) for p in self.properties()])


 class commonWordTweets(DictModel):
    commonWords = db.StringListProperty(required=True)
    venue = db.ReferenceProperty(Venue, required=True, collection_name='commonWords')

класс Место проведения (дБ.Модель): id = db.StringProperty (обязательно = True) fourSqid = db.StringProperty (обязательно = False) name = db.StringProperty (обязательно = True) twitter_ID = db.StringProperty (обязательно = True)

Возвращает следующий ответ JSON

 [
  {
    "commonWords": "[u'storehouse', u'guinness', u'badge', u'2011"', u'"new', u'mayor', u'dublin)']",
    "venue": "<__main__.Venue object at 0x1028ad190>"
  }
]

Как вернуть действительное название места?

1 Ответ

3 голосов
/ 06 января 2011

Во-первых, хотя это не совсем ваш вопрос, настоятельно рекомендуется использовать simplejson для создания json, а не пытаться превратить структуры в строки json самостоятельно.

Чтобы ответить на ваш вопрос, ReferenceProperty просто действует как ссылка на ваш объект Venue. Таким образом, вы просто используете его атрибуты, как обычно.

Попробуйте что-то вроде:

cwt = commonWordTweets()   # Replace with code to get the item from your datastore
d = {"commonWords":cwt.commonWords, "venue": cwt.venue.name}
jsonout = simplejson.dumps(d)
...