قم ببناء استعلام GQL (لمحرك تطبيقات Google) الذي يحتوي على شرط في ReferenceProperty
-
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
كلما أردت الحصول على جداول جميع المحطات.
لا تنتمي إلى StackOverflow