غير قادر على الحصول على النتائج عند تمرير سلسلة عن طريق استبدال المعلمة في استعلام GQL
-
11-09-2019 - |
سؤال
أنا قادر على اجتياز متغير سلسلة بشكل صحيح إلى GQLQUERY من خلال استبدال المعلمات، إليك الرمز الذي حاولت استخدامه؛
user_name = self.request.get('username') #retrieved from UI
p = models.UserDetails.all().filter('user_name = ', user_name).fetch(1)
لا أحصل على أي نتائج وفشل الاستعلام بصمت. ولكن عندما أقصد رمز الاستعلام مثل هذا،
p = models.UserDetails.all().filter('user_name = ', "peter rice").fetch(1)
أحصل على النتائج المتوقعة. أعتقد أنني تمر المتغير user_name
بطريقة خاطئة، الرجاء مساعدتي في الحصول على قطعة من التعليمات البرمجية الصحيحة.
المحلول 2
أعتقد أنني حصلت عليه، حاولت استخدام هذا،
p = models.UserDetails.gql('WHERE user_name = :uname', uname = user_name).fetch(1)
وحصلت على النتائج المتوقعة. أتساءل عن سبب وجود تنسيقات أخرى مشكلة في استبدال السلسلة.
نصائح أخرى
هل حاولت filter('user_name = ', str(user_name))
?
لقد أعجبني أنك متأكد من أن User_Name لديه المحتوى المتوقع.
حاول تسجيل الدخول repr(user_name)
للتحقق من أن السلسلة هي نفسها تماما ما تتوقعه (وأنه ليس Unicode بدلا من الخام). حاول أيضا تسجيل التعبير user_name == "peter rice"
. وبعد بخلاف ذلك، لا أستطيع أن أرى أي سبب يجعل الأمر لن يعمل - لا توجد طريقة حرفيا يمكن أن يؤثر API على ذلك، لأنه لا يعرف أين تأتي الوسيطة التي تمر بها.