Как правильно выполнять объединения "один ко многим" в источнике данных Google App Engine (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):',)

Я попытался просмотреть несколько примеров в Интернете, и все они, похоже, работают ТОЧНО так же, как описано выше.Один комплект документации Google предлагает сделать это немного по-другому, вот так:

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

Но это выдает мне точно такую же ошибку.

Что я делаю не так?

Это было полезно?

Решение

Проблема, которую я обнаружил при попытке запустить ваш код, заключалась в том, что, по-видимому, вам нужно изменить название "app" в Appscreenshot на что-то другое, например "apps".Слово "приложение" должно быть зарезервировано в этом контексте.

Попробуйте вместо этого выполнить этот Запрос.Ты мог бы это сделать .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)

Вот полезная статья о моделировании отношений Ссылка.

Также связанный с этим вопрос вот на ТАКОМ

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top