قم ببناء استعلام GQL (لمحرك تطبيقات Google) الذي يحتوي على شرط في ReferenceProperty

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

  •  21-08-2019
  •  | 
  •  

سؤال

لنفترض أن لدي النموذج التالي:

class Schedule(db.Model):
    tripCode = db.StringProperty(required=True)
    station = db.ReferenceProperty(Station, required=True)    
    arrivalTime = db.TimeProperty(required=True)
    departureTime = db.TimeProperty(required=True)

ولنفترض أن لدي كائن Station مخزنًا في var foo.

كيف أقوم بتجميع استعلام GQL الذي يُرجع كافة كائنات الجدول مع إشارة إلى كائن المحطة المشار إليه بواسطة foo?

هذا هو أفضل ما لدي (وإن كان غير صحيح) محاولة تشكيل مثل هذا الاستعلام:

myQuery = "SELECT * FROM Schedule where station = " + str(foo.key())

مرة اخرى foo هو محطة هدف

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

المحلول

لا يجب عليك إدراج بيانات المستخدم في سلسلة GQL باستخدام استبدال السلسلة.تدعم GQL استبدال المعلمات، لذا يمكنك القيام بذلك:

db.GqlQuery("SELECT * FROM Schedule WHERE station = $1", foo.key())

أو باستخدام واجهة الاستعلام:

Schedule.all().filter("station =", foo.key())

نصائح أخرى

والأمر الأسهل هو تغيير تعريف النموذج عن طريق إضافة حقل "اسم_المجموعة" إلى الخاصية المرجعية:

المحطة = db.ReferenceProperty(المحطة، المطلوبة=صحيح، اسم المجموعة = "الجداول")

ثم يمكنك فقط القيام بما يلي:

foo.schedules

كلما أردت الحصول على جداول جميع المحطات.

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