سؤال

لدي نموذج Datastore يمثل العناصر في موقع التجارة الإلكترونية:

class Item(db.Model):
    CSIN = db.IntegerProperty()
    name = db.StringProperty()
    price = db.IntegerProperty()
    quantity = db.IntegerProperty()

هل هناك طريقة لفرض قيود النزاهة؟ على سبيل المثال، أود التأكد من ذلك quantity لا يقل أبدا أن يكون أقل من 0.

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

المحلول

ال منشئ العقارات يتيح لك تحديد وظيفة مع الوسيطة المسماة "Validator". يجب أن تأخذ هذه الوظيفة حجة واحدة، والقيمة، ورفع استثناء إذا كان صالح غير صالح. علي سبيل المثال:

def range_validator(minval, maxval):
  def validator(v):
    if (minval is not None and v < minval) or (maxval is not None and v > maxval):
      raise ValueError("Value %s outside range (%s, %s)" % (v, minval, maxval))
  return validator

class Item(db.Model):
    CSIN = db.IntegerProperty()
    name = db.StringProperty()
    price = db.IntegerProperty()
    quantity = db.IntegerProperty(validator=range_validator(0, None))

لاحظ أن المثال يستخدم وظيفة متداخلة لتحديد الموصلات العامة للأغراض العامة - يمكنك، بالطبع، استخدم وظائف بسيطة إذا كنت ترغب في كتابة أكثر عرضة للأغراض الخاصة.

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