كيفية القيام بشكل صحيح بنود واحد إلى العديد من ملفات بيانات محرك Google (Python) Google؟

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()

ولكن هذا يعطيني نفس الخطأ بالضبط.

ما الخطأ الذي افعله؟

هل كانت مفيدة؟

المحلول

المشكلة التي وجدتها عند محاولة تشغيل التعليمات البرمجية كانت على ما يبدو تحتاج إلى تغيير اسم "التطبيق" في 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)

فيما يلي مقالة مفيدة حول علاقات النمذجة حلقة الوصل.

أيضا سؤال ذات صلة هنا على ذلك

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top