在to_dict中排除GAE模型中的BlobProperty

时间:2013-03-21 14:24:46

标签: python google-app-engine

我使用GAE为一个项目学习了一些python,除了一件事,我已经弄明白了。将GAE模型转换为JSON时,如何跳过BlobProperty(例如,如果Profile模型具有avatar属性)?所以不是标准:

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

我需要类似的东西:

def to_dict(self):
    return dict([(p, unicode(getattr(self, p))) for p in self.properties() if type(p) is not db.BlobProperty])

但它不适合我。我看着this thread,这非常相似,但我无法让它适合我的情况。我可能在Python中做错了。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

db.Model.properties()将字符串的dict返回给属性,而dict。 iter 仅返回键。所以type(p)总是一个字符串。如果您想要键和值,请改用db.Model.properties().items()。 db.Model。

而是尝试类似:

def to_dict(self):
  return dict([(p, unicode(getattr(self, p))) for p,t in self.properties().items() if type(t) is not db.BlobProperty])