سؤال

قمت بإنشاء خاصية جديدة لنموذج DB الخاص بي في Datastore Google App Engine.

عمر او قديم:

class Logo(db.Model):
  name = db.StringProperty()
  image = db.BlobProperty()

جديد:

class Logo(db.Model):
  name = db.StringProperty()
  image = db.BlobProperty()
  is_approved = db.BooleanProperty(default=False)

كيفية الاستعلام عن سجلات الشعار، والتي لم يكن لديك مجموعة القيمة "is_papproved"؟ حاولت

logos.filter("is_approved = ", None)

لكنها لم تنجح. في عارض البيانات يتم عرض قيم الحقل الجديدة كما.

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

المحلول

وفقا لوثائق محرك التطبيق على الاستعلامات والفهارس, ، هناك تمييز بين الكيانات التي لديها رقم قيمة للممتلكات، وأولئك الذين لديهم باطل قيمة لذلك؛ و "الكيانات بدون خاصية تصفية لا تعاد أبدا من خلال استعلام". لذلك لا يمكن كتابة استعلام لهذه السجلات القديمة.

مقال مفيد هو تحديث مخطط النموذج الخاص بك, والذي يقول أن الطريقة الوحيدة المدعومة حاليا للعثور على كيانات مفقودة بعض الممتلكات هي دراسة جميعها. تحتوي المقالة على التعليمات البرمجية المثالة التي تظهر كيفية الدورة من خلال مجموعة كبيرة من الكيانات وتحديثها.

نصائح أخرى

ربما تغير هذا، لكنني قادر على تصفية السجلات بناء على باطل مجالات.

عندما أحاول استعلام GQL SELECT * FROM Contact WHERE demo=NULL, ، يعود فقط السجلات التي يفتقدها الحقل التجريبي.

وفقا لوث http://code.google.com/appengine/docs/python/datastore/gqlreference.html.:

يمكن أن يكون الجانب الأيمن من المقارنة أحد الإجراءات التالية (حسب الاقتضاء لنوع بيانات العقار): [...] منطقية حرفية، بصيغة حقيقية أو خاطئة؛ ال باطل حرفي، الذي يمثل القيمة الخالية (لا شيء في بيثون).

لست متأكدا من ذلك "باطل" بالضبط مثل "مفقود" على الرغم من: في حالتي، كانت هذه الحقول موجودة بالفعل في نموذجي ولكن لم يتم تعبئتها على الإبداع. ربما Federico يمكنك إخبارنا إذا كان الاستعلام null يعمل في حالتك المحددة؟

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