0

我有一个对象可以包含对同一类型的其他对象的引用。在我的验证器中,我想确保引用不是针对自身的。这可能吗?

class MyObject(db.Model):

  def not_self_validator(value):
    if self._my_entity == value: #something like this..
      logging.warn('attempted to set object to itself')
      raise ValueError('Unable to set an object to itself')

  _my_entity = db.ReferenceProperty(db._SELF_REFERENCE,required=False,default=None,validator=not_self_validator)
4

1 回答 1

1

属性验证器可以接收任何方法/函数,但不可能将该方法绑定到自身。但是,您可以将验证例程调整为以下内容:

def not_self_validator(value):
  #is checks for same address(pointer) whereas == will call the equality method
  if value._my_entity is value:
    logging.warn('attempted to set object to itself')
    raise ValueError('Unable to set an object to itself')
于 2012-07-18T16:32:34.617 回答