我正在使用带有python 2.7的appengine 1.8
我有以下类型的对象:
class Person(db.Model):
name = db.StringProperty()
email = db.EmailProperty()
和这个人的照片:
class Photo(db.Model):
image = db.BlobProperty()
type = db.StringProperty()
caption = db.TextProperty()
person = db.ReferenceProperty(Person)
我想在Person类中有一个函数直接访问Person的照片,如下所示:
class Person(db.Model):
name = db.StringProperty()
email = db.EmailProperty()
@property
def photos(self):
photos = Photo.all().filter("person =", self._key)
然而这不起作用。我应该使用self._key还是有另一种方法来访问封闭实体的密钥?
感谢。
答案 0 :(得分:1)
如果这是您的完整代码,您似乎实际上没有在photos方法中返回任何值。
表示,您实际上需要返回该值,而不是分配给名为photos
的局部变量
(请忽略请求您使用classmethod的不准确的注释。这显然是错误的,因为您需要访问当前键值,因此它是一个实例方法,而不是类方法。)
答案 1 :(得分:1)
一个例子:
class Photo(db.Model):
image = db.BlobProperty()
type = db.StringProperty()
caption = db.TextProperty()
person = db.ReferenceProperty(Person)
@classmethod
photos_of_person(cls, person_key):
return cls.all().filter("person =", person_key)
class Person(db.Model):
name = db.StringProperty()
email = db.EmailProperty()
def person_photos(self):
return Photo.photos_of_person(self.key())