gpt4 book ai didi

python - 模型验证器谷歌应用引擎 - BadValueError

转载 作者:太空宇宙 更新时间:2023-11-03 17:32:59 25 4
gpt4 key购买 nike

我从 Google 应用引擎和验证器中获得了 ndb 模型。但是当我使用 postman 尝试验证并从 postman 生成的字符串中强制执行 int 时。我仍然收到 BadValueError:BadValueError:预期整数,得到 u'2'

出了什么问题?

def int_validator(prop, val):
if val:
val = int(val)
return val

class TwitterUser(ndb.Model):
"""Model for twitter users"""
screen_name = ndb.StringProperty(required=True)
followers_count = ndb.IntegerProperty(validator=int_validator)

最佳答案

ndb.IntegerProperty_validate() 方法 will run before your custom validator因此引发了异常。

要使您的代码正常工作,您需要使用 ndb.Property 代替,或者继承 ndb.IntegerProperty 并覆盖其 _validate() 与你的方法。

第一个解决方案看起来像这样:

def int_validator(prop, val):
if val:
val = int(val)
return val

class TwitterUser(ndb.Model):
"""Model for twitter users"""
screen_name = ndb.StringProperty(required=True)
followers_count = ndb.Property(validator=int_validator)

第二个是这样的:

class CustomIntegerProperty(ndb.IntegerProperty):
def _validate(self, value):
if val:
val = int(val)
return val
# you still need to return something here or raise an exception

class TwitterUser(ndb.Model):
"""Model for twitter users"""
screen_name = ndb.StringProperty(required=True)
followers_count = ndb.CustomIntegerProperty()

我认为这两者都不是理想的解决方案,因为您可能更好地简单地确保将 int 传递给 follower_count 属性并在 BadValueError 中进行处理案例。

关于python - 模型验证器谷歌应用引擎 - BadValueError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31609614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com