gpt4 book ai didi

python - 如何根据 ReferenceProperty 的属性查询记录? (应用引擎上的 Django)

转载 作者:太空宇宙 更新时间:2023-11-04 11:02:44 24 4
gpt4 key购买 nike

如果我在 Python (+ Django) App Engine 应用程序中有以下模型:

class Album(db.Model):
private = db.BooleanProperty()
...

class Photo(db.Model):
album = db.ReferenceProperty(Album)
title = db.StringProperty()

...如何检索属于公共(public)相册(即私有(private) == False 的相册)的所有照片?

为了进一步说明我的意图,我认为应该是:

public_photos = Photos.all().filter('album.private = ', False)

然后我可以做类似的事情:

photos_for_homepage = public_photos.fetch(30)

但查询不匹配任何内容,这表明我走错了路。

最佳答案

你不能。 App Engine 不支持联接。

一种方法是手动实现连接。例如,您可以获取所有照片,然后在代码中过滤掉私有(private)照片。或者获取所有公开相册,然后获取他们的每张照片。这是否会正常执行取决于您的数据。

另一种方法是对数据进行非规范化。在 Photo 模型中放置另一个字段,例如:

class Photo(db.Model): 
album = db.ReferenceProperty(Album)
album_private = db.BooleanProperty()
title = db.StringProperty()

然后您可以过滤公开照片:

public_photos = Photos.all().filter('album_private = ', False)

这提高了查询性能,但以写入性能为代价。每当您更改相册的私有(private)标志时,您都需要更新照片的 album_private 字段。这取决于您的数据和读/写模式,这是好是坏。

关于python - 如何根据 ReferenceProperty 的属性查询记录? (应用引擎上的 Django),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3939830/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com