Field 类

Field 类是一个表示文档字段的抽象基类。该类不应直接进行实例化;而应使用表示特定数据类型的某个子类。

注意:**我们不再建议采用这种解决方案。**使用此 API 的应用只能在 Python 2 运行时环境中运行,并且必须先升级到[建议的解决方案] (/appengine/docs/standard/python/migrate-to-python3/migrating-services#migration_paths_for_bundled_services),然后才能迁移到 Python 3 运行时。

Field 在模块 google.appengine.api.search 中定义。

属性

Field 类的实例具有以下属性:

name

字段的名称。必须以字母开头,只能包含字母、数字和下划线 (_),长度不能超过 500 个字符。

language

字段内容的双字母 ISO 693-1 语言代码,用于帮助实现词法单元化。例如,en 表示该字段为英语。如果为 None,则将使用文档的语言代码。

value

字段的值。数据类型因特定子类而异。

子类

Field 类具有以下子类:

class TextField

包含文本的字段。

字段的值必须是字符串或 Unicode 字符串。以下示例展示了一个名为 signature 且包含波兰语内容的文本字段:

TextField(name='signature', value='brzydka pogoda', language='pl')

异常

TypeError

提供的值不是文本字符串。

ValueError

值超过最大允许长度。

class HtmlField

包含 HTML 内容的字段。

字段的值必须是包含可搜索字段内容的字符串或 Unicode 字符串。以下示例显示了名为 content 的 HTML 字段:

HtmlField(name='content', value='<html>herbata, kawa</html>', language='pl')

异常

TypeError

提供的值不是文本字符串。

ValueError

值超过最大允许长度。

class AtomField

该字段中包含的文本将被视为不可分割的(原子化)词法单元,用于编入索引。

字段的值必须是被视为原子化词法单元的字符串或 Unicode 对象。以下示例显示名为 contributor 的一个 atom 字段:

AtomField(name='contributor', value='foo@bar.com')

异常

TypeError

提供的值不是文本字符串。

ValueError

值超过最大允许长度。

class NumberField

包含数值的字段。

字段的值必须是数字。以下示例展示了一个名为 size 且整数值为 10 的数字字段:

NumberField(name='size', value=10)

异常

TypeError

提供的值不是数字。

class DateField

包含日期或日期时间值的字段。

字段的值必须是 datetime.datedatetime.datetime 类型。 只能使用 Python“naive”日期和时间对象。不允许使用“Aware”对象。以下示例显示了名为 creation_date 的日期字段,该字段表示 2011 年 3 月 21 日:

DateField(name='creation_date', value=datetime.date(2011, 03, 21))

异常

TypeError

提供的值不是 datetime.datedatetime.datetime

class GeoField

包含 GeoPoint 值的字段。

以下示例显示了一个名为 place 的 GeoField,表示纬度为 -33.84 度,经度为 151.26 度。

GeoField(name='place', value=GeoPoint(latitude=-33.84, longitude=151.26))

异常

TypeError

提供的值不是 GeoPoint