كيف أطلب الكائنات المشار إليها من استعلام محرك جوجل التطبيق مخزن البيانات؟
-
22-08-2019 - |
سؤال
ولقد Exhibit
الأشياء التي ترجع Gallery
الكائنات كلاهما المخزنة في محرك جوجل التطبيق مخزن البيانات.
وكيف تأمر جمع Exhibit
على كل كائن Gallery
عندما التفاف على بالتكرار عبر القيم (في نهاية المطاف في قالب جانغو)؟
وأي بمعنى. هذا لا يعمل
class Gallery(db.Model):
title = db.StringProperty()
position = db.IntegerProperty()
class Exhibit(db.Model):
gallery = db.ReferenceProperty(Gallery, collection_name='exhibits')
title = db.StringProperty()
position = db.IntegerProperty()
galleries = db.GqlQuery('SELECT * FROM Gallery ORDER BY position')
for gallery in galleries:
gallery.exhibits.order('position')
# ... send galleries off the the Django template
عند تقديمها في قالب، وصالات العرض أمر صحيح ولكن المعروضات ليست كذلك.
المحلول
وبدلا من الاعتماد على الممتلكات جمع محرك التطبيقات يخلق، تحتاج لبناء الاستعلام الخاص بك:
<اقتباس فقرة>والمعارض = Exhibit.all (). تصفية ( "معرض =" معرض). النظام ( "موقف")
اقتباس فقرة>وأو مكافئ، في GQL:
<اقتباس فقرة>والمعارض = db.GqlQuery ( "SELECT * FROM WHERE معرض معرض =: 1 ORDER BY موقف"، ومعرض)
اقتباس فقرة>إذا كنت تريد أن تكون قادرة على القيام بذلك من داخل القالب، بدلا من تمرير في قائمة من قوائم المعروضات، يمكنك تحديد طريقة بسيطة على الكائن معرض الذي ينفذ هذا الاستعلام، ومرجع له من قالب (على سبيل المثال، {{}} gallery.exhibits_by_position سيتم تنفيذ exhibits_by_position () على الكائن معرض، والتي يمكن بعد تنفيذ الاستعلام أعلاه).
إذا كنت تشعر بالقلق إزاء الآثار المترتبة سرعة هذا، لا داعي للقلق: الخاصية جمع محرك التطبيقات يخلق هي السكر ببساطة النحوي لهذا