App Engine 数据存储区通过引用过滤器连接

发布于 2024-11-19 17:05:34 字数 676 浏览 1 评论 0原文

我对 App Engine 数据存储区非常陌生,我无法弄清楚这一点。 我有这些模型: <代码>

class SomeUser(User):
        name = db.StringProperty()

class Group(db.Model):
        title = db.StringProperty()
        date_started = db.DateTimeProperty(auto_now_add=True)

class GroupParticipant(db.Model):
        group = db.ReferenceProperty(Group, collection_name = 'participants')
        participant = db.ReferenceProperty(SomeUser)
        is_owner = db.BooleanProperty()

<代码> 如何查询数据存储以获得如下结果:

Group.title, Group_owner, Number of participants/Group
group1,      someuser1,   3
group2,      someuser2,   4

I'm very new to App Engine Datastore and I could not figure this out.
I have these models:

class SomeUser(User):
        name = db.StringProperty()

class Group(db.Model):
        title = db.StringProperty()
        date_started = db.DateTimeProperty(auto_now_add=True)

class GroupParticipant(db.Model):
        group = db.ReferenceProperty(Group, collection_name = 'participants')
        participant = db.ReferenceProperty(SomeUser)
        is_owner = db.BooleanProperty()


How to query the datastore to get a result like this:

Group.title, Group_owner, Number of participants/Group
group1,      someuser1,   3
group2,      someuser2,   4

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

腹黑女流氓 2024-11-26 17:05:35

根本没有连接。您必须手动获取所有数据。例如,您可以从 GroupParticipant 获取所有记录,然后循环获取所有 GroupSomeUser(请注意,通过 Key< 获取) /code> 非常快)

——

顺便说一句,可能最好使用不同的数据结构,就像

class SomeUser(User):
        name = db.StringProperty()

class Group(db.Model):
        title = db.StringProperty()
        date_started = db.DateTimeProperty(auto_now_add=True)
        owner = db.ReferenceProperty(SomeUser)
        participants = db.ListProperty(db.Key)

在这种情况下,您只需一个查询即可获取所有所需的数据

There is no joins at all. You have to fetch all data manually. For example you can fetch all records from GroupParticipant, and then fetch all Group and SomeUser in loop (note that fetching by Key is very fast)

--

btw, probably it's better to use different data structures, like

class SomeUser(User):
        name = db.StringProperty()

class Group(db.Model):
        title = db.StringProperty()
        date_started = db.DateTimeProperty(auto_now_add=True)
        owner = db.ReferenceProperty(SomeUser)
        participants = db.ListProperty(db.Key)

at this case you can fetch all required data by just one query

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文