Wie man richtig tun one-to-many schließt sich an einer (Python) Google App Engine-Datenquelle?

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

  •  11-09-2019
  •  | 
  •  

Frage

Ich habe einige Modelle aufgebaut wie:

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)

Ich versuche, ein "Elternteil" app in einem Screenshot zu verweisen wie folgt:

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

Aber es wirft mir sagen:

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

Ich habe im Internet über ein paar Beispiele versucht zu gehen und sie alle scheinen genau wie die oben zu arbeiten. Eine der Dokumentation festgelegt Google hat nach oben schlägt es zu tun ein wenig anders, wie folgt aus:

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

Aber das gibt mir genau die gleichen Fehler.

Was mache ich falsch?

War es hilfreich?

Lösung

Das Problem, das ich gefunden, wenn sie versuchen, Ihren Code zu laufen war, dass anscheinend müssen Sie den Namen ‚App‘ ändern in AppScreenshots auf etwas anderes wie ‚Apps‘. Das Wort ‚App‘ ist in diesem Zusammenhang reserviert werden.

Versuchen Sie stattdessen diese Abfrage. Sie könnten .filter () auch auf dies tun, wenn Sie nicht die erste Einheit wollen.

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)

Hier ist ein hilfreicher Artikel über Modellierung Beziehungen Link .

Auch eine weitere Frage hier auf SO

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top