加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – GAE组织数据结构问题

发布时间:2020-12-20 11:15:47 所属栏目:Python 来源:网络整理
导读:好.我正在和GAE合作.我想创建这样的东西: 我有类型“组”“主题”“标签”: 每个“团体”可以拥有尽可能多的人 根据需要“主题” 每个“主题”可以包含尽可能多的“标签” 如所须 每个“组”可以有尽可能多的“标签” 如所须 它就像圆圈一样. 现在我有这样
好.我正在和GAE合作.我想创建这样的东西:

我有类型“组”“主题”“标签”:

>每个“团体”可以拥有尽可能多的人
根据需要“主题”
>每个“主题”可以包含尽可能多的“标签”
如所须
>每个“组”可以有尽可能多的“标签”
如所须

它就像圆圈一样.

现在我有这样的事情:

class TopicGroup(db.Model):
    value = db.StringProperty(required=True)

class Topic(db.Model):
    title = db.StringProperty(required=True)
    group = db.ReferenceProperty(TopicGroup,'group','topics',required=True)

class TopicTag(db.Model):
    topic = db.ReferenceProperty(Topic,'topic','tags',required=True)
    group = db.ReferenceProperty(TopicGroup,required=True)
    value = db.StringProperty(required=True)

但这并不好(在我的模型中“主题”只能有一个标签,但是我需要“主题”来根据需要提供尽可能多的标签)

好吧,我脑子里已经有了一个裂缝…是否有人可以提供帮助?

解决方法

多对多连接可以实现为连接表(或关系模型).在下面的解决方案中,有一个模型包含应用于各个组(GroupTags)的所有标记以及一个包含应用于主题(TopicTags)的标记的模型.

将标签本身与标签的引用分离后,您可以执行更改标签拼写的操作,而无需更新应用该标签的每个组或主题.

此外,此模型充分利用了AppEngine在具有引用它们的其他实体的实体上创建自动反向引用的事实.在下面的模型中,Group实体将拥有一个名为topics的属性,该属性是一个查询,用于获取组参考指向该组的所有Topic实体.类似地,每个Group从GroupsTags模型获取一个tags属性,该属性为其提供属于它的所有Tag实体.每个Tag实体都获得一个groups和topics属性,该属性是对分配了给定Tag的那些类型的所有实体的查询,使得按标签搜索(一种非常典型的操作)非常简单.

这是一种非常强大而灵活的方法来建模您的系统.

class Group(db.Model):
    # All of my group-specific data here.

class Topic(db.Model):
    title = db.StringProperty(required=True)
    group = db.ReferenceProperty(Group,collection='topics')
    # other topic-specific data here.

class Tag(db.Model):
    text = db.StringProperty(required=True)

class GroupTags(db.Model):
    group = db.ReferenceProperty(Group,collection='tags')
    tag = db.ReferenceProperty(Tag,collection='groups')

class TopicTags(db.Model):
    topic = db.ReferenceProperty(Topic,collection='topics')

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读