Comment bien faire l'un à plusieurs jointures sur un (Python) Google App Engine source de données?

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

  •  11-09-2019
  •  | 
  •  

Question

J'ai quelques modèles mis en place comme:

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)

Je suis en train de faire référence à une application « parent » dans une capture d'écran comme ceci:

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

Mais il me plaint à dire:

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

Je l'ai essayé d'aller sur quelques exemples sur Internet et ils semblent tous fonctionner comme ci-dessus. Un ensemble de la documentation Google a jusqu'à le faire suggère un peu différemment, comme ceci:

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

Mais cela me donne exactement la même erreur.

Qu'est-ce que je fais mal?

Était-ce utile?

La solution

Le problème que je trouve en essayant de courir votre code était qu'apparemment vous avez besoin de changer le nom de « app » dans AppScreenshots à quelque chose d'autre comme « apps ». Le mot « app » doit être réservé dans ce contexte.

Essayez cette requête à la place. Vous pouvez faire .filter () trop sur si vous ne voulez pas la première entité.

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)

Voici un article utile sur les relations de modélisation lien .

Aussi une question connexe ici sur le SO

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top