문제

전자 상거래 사이트의 항목을 나타내는 데이터 스토어 모델이 있습니다.

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