كيف أطلب الكائنات المشار إليها من استعلام محرك جوجل التطبيق مخزن البيانات؟

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

سؤال

ولقد 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 () على الكائن معرض، والتي يمكن بعد تنفيذ الاستعلام أعلاه).

إذا كنت تشعر بالقلق إزاء الآثار المترتبة سرعة هذا، لا داعي للقلق: الخاصية جمع محرك التطبيقات يخلق هي السكر ببساطة النحوي لهذا

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