python中的google app engine db.Model只显示用户定义的字段

时间:2010-05-04 14:05:10

标签: python google-app-engine google-cloud-datastore

我是一个蟒蛇新手,所以如果以前问过这个问题,我会事先道歉。

我正在GAE中构建一个应用程序,需要生成一个包含用户定义字段子集值的报告。

例如,在我的db模型CrashReport中,我有以下字段:

  • 条目类型
  • ENTRY_DATE
  • INSTANCE_ID
  • build_id
  • crash_text
  • machine_info

我向用户显示上面的列表作为他们选择的复选框组。无论用户选择哪个字段,我都会创建一个报告,显示数据存储区中的所有值,但仅针对它们选择的字段。例如,如果从上面的列表中,用户选择了build_id和crash_text字段,则输出可能如下所示:

build_id crash_text
0.8.2吹制垫片
0.8.2瘪胎
0.8.1裂缝
...

所以问题是,我究竟只能访问用户定义的字段的值?

1 个答案:

答案 0 :(得分:2)

给定模型实例mi和属性名称angetattr(mi, an)将获取对象an的属性mi的值。如果对象AttributeError没有该名称的属性,它将引发mi;如果你想避免这种情况,请尝试例如getattr(mi, an, None)

因此,如果您有一个属性名称列表la

[getattr(mi, x, None) for x in la]

为您提供了给定实例la的名称在mi中的各种属性的值列表。

如果您还有一个实例列表li,并且想要一个列表列表(每个实例一个外部列表,每个列表包含所有属性值),

[[getattr(mi, x, None) for x in la] for mi in li]

等等。这些都是一般的Python概念和操作,它们适用于从数据存储区中提取的模型实例,与任何其他Python对象相比,不会少(也没有)。