如何正确地做一个一对多的连接上(Python)的谷歌应用程序引擎的数据源?

StackOverflow https://stackoverflow.com/questions/1100472

  •  11-09-2019
  •  | 
  •  

我有一些模型建立这样的:

class Apps(db.Model):
    name        = db.StringProperty(multiline=False)
    description = db.TextProperty()

class AppScreenshots(db.Model):
    image_file     = db.StringProperty(multiline=False)
    description    = db.StringProperty(multiline=False)
    app            = db.ReferenceProperty(Apps)

我试图引用一个“父”的应用程序中的屏幕截图,像这样:

a = Apps.get(app_key)   
ss = AppScreenshots(
    image_file     = 'foo',
    description    = 'bar',
    app            = a
)
ss.put()

但它向我抱怨说:

BadArgumentError('_app should be a string; received ag1raWxsZXItcm9ib3RzcgoLEgRBcHBzGAkM (a Key):',)

我试着去在几个例子在互联网上,他们似乎都工作就像上面。一个设置文档的谷歌拥有了建议这样做有点不同,如下所示:

a = Apps.get(app_key)   
ss = AppScreenshots(
    image_file     = 'foo',
    description    = 'bar',
    app            = a.key()
)
ss.put()

不过,让我确切的同样的错误。

我在做什么错了?

有帮助吗?

解决方案

试图运行你的代码,当我发现的问题是,显然你需要AppScreenshots改变“应用程序”的名义到别的诸如“应用”。在“应用”一词必须在此上下文中保留。

尝试此查询代替。你可以做.filter()也于这一点,如果你不希望第一个实体。

class AppScreenshots(db.Model):
     image_file     = db.StringProperty()
     description    = db.StringProperty()
     apps            = db.ReferenceProperty(Apps)

appsObject = db.Query(Apps).get()

ss = AppScreenshots(image_file = 'foo', description = 'bar',apps = appsObject)

下面是建模关系链接一个有用的制品。

另外一个相关的问题这里SO

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top