在 SqlAlchemy @validates装饰器中返回自定义消息



我对SQLAlchemy比较陌生。

我有一个非常简单model,其中包含使用sqlalchemy装饰器的自定义@validates函数:

class User(db.Model):
  ...
  email = db.Column(db.String(255)) # don't worry about uniqueness for now
  @validates('email')
  def validate_email(self, key, address):
    assert '@' in address # of course a regex is better, I know
    return address

然后以后:

try:
  user = User('fidel#cuba.cu')
  db.session.add(user)
  db.session.commit()
except Exception as e:
  print e.message # returns an empty string ''

我想做什么:

...
except Exception as e:
  # json_error is a custom function of my own 
  return json_error(e.message, 400) 

所以问题是:如何将自定义错误消息附加到 SQLAlchemy 中的自定义验证规则?也许我需要创建一个包含消息的自定义异常?

断言可以采用第二个参数 - 断言失败时使用的消息:

class User(db.Model):
  # ... snip ...
  @validates('email')
  def validate_email(self, key, address):
    assert '@' in address, "Invalid email"
    return address

最新更新