Cómo hacer correctamente una-a-muchos se une en una fuente de datos del motor (Python) Google App?

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

  •  11-09-2019
  •  | 
  •  

Pregunta

Tengo algunos modelos creados como:

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)

Estoy tratando de hacer referencia a una aplicación "padre" en una captura de pantalla de este modo:

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

Pero se queja a mí diciendo:

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

He intentado pasarse unos pocos ejemplos en el Internet y todos ellos parecen funcionar al igual que el anterior. Uno href="http://code.google.com/appengine/docs/python/datastore/entitiesandmodels.html#References" de documentación Google tiene hasta sugiere hacerlo un poco diferente, como esto:

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

Pero eso me da el mismo error exacto.

¿Qué estoy haciendo mal?

¿Fue útil?

Solución

El problema que nos encontramos al intentar ejecutar el código era que al parecer es necesario cambiar el nombre de 'aplicación' en AppScreenshots a algo distinto, como 'aplicaciones'. La palabra 'aplicación' debe reservarse en este contexto.

Intentar esta consulta en su lugar. Usted podría hacer .Filter () demasiado en esto si no desea que la primera entidad.

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)

Aquí es un artículo útil en las relaciones de modelado enlace .

También una pregunta relacionada aquí en SO

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top