GAE python - 如何更改“一” “许多”对象指向?

发布于 2024-10-17 01:58:58 字数 745 浏览 4 评论 0原文

我使用 GAE 数据库来存储 Supp 类型的对象,它们是 SuppSet 的一部分。一个 SuppSet 中可以有许多 Supp。我使用 ReferenceProperty 模型在 SuppSet 和 Supps 之间创建一对多关系,如下所示:

class SuppSet(db.Model):
    <stuff>

class Supp(db.Model):
    <more stuff>
    suppset    = db.ReferenceProperty(SuppSet, collection_name='supp_list')

我能够从其原始 SuppSet 中删除 Supp ,但我不知道如何更改 Supp 指向的 SuppSet 。我尝试了以下操作,但没有成功:

q = SuppSet.gql("WHERE name = :1", name_of_the_new_SuppSet)
s = q.get()
supp.suppset = s

我还尝试使用 list 操作将 Supp 推入新的 SuppSet 的 collection_list supp_list,这不起作用。

非常感谢任何帮助。

I'm using the GAE database to store objects of type Supp, which are part of a SuppSet. A SuppSet can have many Supps in it. I'm using the ReferenceProperty model to create the one-to-many relationship between the SuppSet and Supps as follows:

class SuppSet(db.Model):
    <stuff>

class Supp(db.Model):
    <more stuff>
    suppset    = db.ReferenceProperty(SuppSet, collection_name='supp_list')

I'm able to delete the Supp from its original SuppSet, but I can't figure out how to change the SuppSet that a Supp points to. I've tried the following with no success:

q = SuppSet.gql("WHERE name = :1", name_of_the_new_SuppSet)
s = q.get()
supp.suppset = s

I've also tried using list manipulation to push the Supp into the new SuppSet's collection_list supp_list, which didn't work.

Any help is much appreciated.

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

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

发布评论

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

评论(1

小伙你站住 2024-10-24 01:58:58
from google.appengine.ext import db

class SuppSet(db.Model):
    name = db.StringProperty()

class Supp(db.Model):
    suppset = db.ReferenceProperty(SuppSet, collection_name='supp_list')

suppSet0, suppSet1 = SuppSet(name = '0'), SuppSet(name = '1')
suppSet0.put()
suppSet1.put()

supp = Supp(suppset=suppSet0)
supp.put()

print 'suppSet0.supp_list: %r' % list(suppSet0.supp_list)
print 'suppSet1.supp_list: %r' % list(suppSet1.supp_list)
print 'suppset for sup: %s' % supp.suppset.name

supp.suppset = suppSet1
supp.put()

print 'suppSet0.supp_list: %r' % list(suppSet0.supp_list)
print 'suppSet1.supp_list: %r' % list(suppSet1.supp_list)
print 'suppset for sup: %s' % supp.suppset.name

在交互式控制台中工作正常:

suppSet0.supp_list: [<__main__.Supp object at 0x42a0f10>]
suppSet1.supp_list: []
suppset for sup: 0
suppSet0.supp_list: []
suppSet1.supp_list: [<__main__.Supp object at 0x429a3d0>]
suppset for sup: 1
from google.appengine.ext import db

class SuppSet(db.Model):
    name = db.StringProperty()

class Supp(db.Model):
    suppset = db.ReferenceProperty(SuppSet, collection_name='supp_list')

suppSet0, suppSet1 = SuppSet(name = '0'), SuppSet(name = '1')
suppSet0.put()
suppSet1.put()

supp = Supp(suppset=suppSet0)
supp.put()

print 'suppSet0.supp_list: %r' % list(suppSet0.supp_list)
print 'suppSet1.supp_list: %r' % list(suppSet1.supp_list)
print 'suppset for sup: %s' % supp.suppset.name

supp.suppset = suppSet1
supp.put()

print 'suppSet0.supp_list: %r' % list(suppSet0.supp_list)
print 'suppSet1.supp_list: %r' % list(suppSet1.supp_list)
print 'suppset for sup: %s' % supp.suppset.name

works fine in the interactive console:

suppSet0.supp_list: [<__main__.Supp object at 0x42a0f10>]
suppSet1.supp_list: []
suppset for sup: 0
suppSet0.supp_list: []
suppSet1.supp_list: [<__main__.Supp object at 0x429a3d0>]
suppset for sup: 1
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文