【问题标题】:raised BadValueError(Entity has uninitialized properties: created_by)引发 BadValueError(实体具有未初始化的属性:created_by)
【发布时间】:2019-03-20 04:19:53
【问题描述】:

我收到 500 错误。我检查了谷歌应用引擎上的日志。我发现这是由于引发 BadValueError(Entity has uninitialized properties: created_by)

有一个日志的屏幕截图。请在下面进行检查。

我们用来创建数据存储的模型就是这个。

class YoProject(BaseNDBExpando):
project_name = ndb.StringProperty(required=True)
***created_by = ndb.KeyProperty(required=True)***
created_by_name = ndb.StringProperty(required=True, indexed=False)
client_name = ndb.StringProperty(required=True)
client_spoc_name = ndb.StringProperty(required=True, indexed=False)
client_spoc_email = ndb.StringProperty(required=True)
type_ = ndb.StringProperty(required=True, choices=["tm", "pa"])
description = ndb.TextProperty(indexed=False)
hidden = ndb.BooleanProperty(required=True, default=False)

它运行良好。但是当我尝试在其中引入一个类属性时。我开始收到此错误,并且在 GAE 数据存储仪表板上,我没有两个不同数据类型的相同属性,不知道如何处理这种情况。需要高级开发人员的指导和帮助。

【问题讨论】:

  • @DanCornilescu 我需要你的帮助。

标签: python-2.7 google-app-engine web-applications google-cloud-datastore webapp2


【解决方案1】:

如果您在本地环境中,我建议您删除/刷新此模型的所有实体。

然后尝试使用除classes 之外的另一个词作为属性名称来重现它。

【讨论】:

  • 类没有问题,但错误值错误(实体具有未初始化的属性:created_by)应用程序仍在运行,但我必须刷新页面才能在应用程序中前进。
【解决方案2】:

认为我在早期的 GAE 时代也看到了这个错误,当我一直在修改实体模型时,我现在更不愿意这样做,因为我知道这样更改需要格外小心,而且几乎总是一种迁移策略。

我在将required=True 选项添加到模型的属性后得到它。如果您尝试put 是没有设置该属性的实体,则该选项会导致错误,显然。但是,在模型中启用该选项之前,尝试在数据存储区中获取实体 put 而不设置属性时,也会导致错误。这就是我怀疑可能正在发生的事情。请注意,此检查是 ndb 特定的,因此它会影响您的应用代码,但不会影响控制台查看器或使用其他客户端库的应用。

查看Entity menu 中的所有此类实体,检查哪些没有设置属性。

尝试为您的应用启用调试(通过在应用的webapp2.WSGIApplication() 调用中传递debug=True),这应该显示附加到相应请求日志的回溯。找出遇到的错误的确切位置会很有帮助。

您在仪表板图像中突出显示的重复项可能是红鲱鱼 - 我在我的应用中也看到了类似的,没有不良影响(或者至少我没有注意到)。

我不确定其中一些是否不是我及时对实体模型所做的各种更改的副作用,特别是为某些属性翻转 indexed 设置。

但我几乎可以肯定,字符串/文本只是由数据存储区 Text string 属性仅在值小于 1500 字节时才被索引(即在 ndb - @987654331 中被视为不同的属性类型) @ 和 StringProperty)。

另请注意,0B 索引对于未编入索引的属性是正常的,例如,请参阅您的 description 属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 2018-05-15
    • 2019-12-02
    • 2021-06-21
    相关资源
    最近更新 更多