获取其中Python名称!=数据存储名称的ndb模型实例的属性

用户名

目标:从Example的实例中获取属性的“ Python名称”,在该实例中,模型是用不同的数据存储名称定义的

为了提供一些上下文,我有一个to_dict()用于序列化NDB模型的自定义方法。该方法的核心如下:

for key, prop in self._properties.iteritems():
    if hasattr(self, key):
        value = getattr(self,key)
        # do typical to_dict() stuff

如果模型定义如下,则一切正常:

import Thing 
class Example(ndb.Model):
    things = ndb.KeyProperty(Thing, repeated=True)

但是,如果定义了Python名称things但数据存储名称为的位置,则会出现问题'Thing'

# no import req'd
class Example(ndb.Model):
    things = ndb.KeyProperty('Thing', repeated=True)

在第一种情况下,keyfromself._properties.iteritems()将为things如果我有Example的实例,请说example,则结果hasattr(example,'things')将为True。

在第二种情况下,keybeth为Thinghasattr(example,'Thing')将评估为False,因为Example实例的属性由Python名称“ things”定义。

如何获取实例的属性?TIA。

亚历克斯·马丁里(Alex Martelli)

ndb自己的Model._to_dict方法按以下步骤进行操作(简化):

for prop in self._properties.itervalues():
  name = prop._code_name
  values[name] = prop._get_for_dict(self)

因此:名称是从_code_name每个属性的名称中获取的(而不是其在中的键)self._properties,并且值(通过其_get_for_dict方法)委托给了属性本身以允许进一步调整。

结果,将您的两个示例都编码为Example1和Example2,它们_properties.items()整体分别是:

[('things', KeyProperty('things', repeated=True, kind='Thing'))]
[('Thing', KeyProperty('Thing', repeated=True))]

它们._to_dict(),根据需要,两者相等

{'things': [Key('Thing', 'roro')]}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取其语言的文化显示名称

来自分类Dev

查询行的源表时,获取其源表的名称

来自分类Dev

获取其他语言的Joomla网站名称

来自分类Dev

从模型名称获取模块名称

来自分类Dev

从Python中的名称获取属性的类?

来自分类Dev

提取其中包含歌曲的流派名称列表

来自分类Dev

如何在NDB数据存储中获取模型列表

来自分类Dev

获取其中的所有子文件夹名称和所有html文件

来自分类Dev

通过/ feed端点获取其中提到页面名称的Facebook帖子

来自分类Dev

如何从列表中获取其名称的项目

来自分类Dev

获取GAE Python中所有NDB模型名称(类名称)的列表

来自分类Dev

如何通过URL下载文件然后获取其名称

来自分类Dev

数据绑定:“模型”不包含名称为“键”的属性

来自分类Dev

获取枚举实例的名称

来自分类Dev

在春季自动装配Bean列表并获取其名称

来自分类Dev

NDB云数据存储写入默认名称空间

来自分类Dev

如何在SpriteKit中获取其名称的Node?

来自分类Dev

通过名称搜索Google驱动器文件并获取其ID

来自分类Dev

遍历EF模型并获取属性名称

来自分类Dev

无法获取其中具有数组名称的2d数组的长度

来自分类Dev

获取其他语言的Joomla网站名称

来自分类Dev

如何获取模型上的属性名称?

来自分类Dev

获取其中的所有子文件夹名称和所有html文件

来自分类Dev

获取其他频道的本地化名称

来自分类Dev

获取单个子文件夹名称,但不获取其内容

来自分类Dev

从对象列表中获取其名称的字符向量

来自分类Dev

通过变量模型名称和pk获取模型实例

来自分类Dev

在不获取其位类型的情况下获取对象的名称

来自分类Dev

我无法让我的代码打开我的 .txt 文件并读取其中是否包含名称

Related 相关文章

  1. 1

    获取其语言的文化显示名称

  2. 2

    查询行的源表时,获取其源表的名称

  3. 3

    获取其他语言的Joomla网站名称

  4. 4

    从模型名称获取模块名称

  5. 5

    从Python中的名称获取属性的类?

  6. 6

    提取其中包含歌曲的流派名称列表

  7. 7

    如何在NDB数据存储中获取模型列表

  8. 8

    获取其中的所有子文件夹名称和所有html文件

  9. 9

    通过/ feed端点获取其中提到页面名称的Facebook帖子

  10. 10

    如何从列表中获取其名称的项目

  11. 11

    获取GAE Python中所有NDB模型名称(类名称)的列表

  12. 12

    如何通过URL下载文件然后获取其名称

  13. 13

    数据绑定:“模型”不包含名称为“键”的属性

  14. 14

    获取枚举实例的名称

  15. 15

    在春季自动装配Bean列表并获取其名称

  16. 16

    NDB云数据存储写入默认名称空间

  17. 17

    如何在SpriteKit中获取其名称的Node?

  18. 18

    通过名称搜索Google驱动器文件并获取其ID

  19. 19

    遍历EF模型并获取属性名称

  20. 20

    无法获取其中具有数组名称的2d数组的长度

  21. 21

    获取其他语言的Joomla网站名称

  22. 22

    如何获取模型上的属性名称?

  23. 23

    获取其中的所有子文件夹名称和所有html文件

  24. 24

    获取其他频道的本地化名称

  25. 25

    获取单个子文件夹名称,但不获取其内容

  26. 26

    从对象列表中获取其名称的字符向量

  27. 27

    通过变量模型名称和pk获取模型实例

  28. 28

    在不获取其位类型的情况下获取对象的名称

  29. 29

    我无法让我的代码打开我的 .txt 文件并读取其中是否包含名称

热门标签

归档