我在App Engine中创建一个名为“Chair”的NDB模型。该模型将具有名称为“蓝色椅子”和“红色椅子”的实体。但是,我希望用户能够以多种语言/区域设置存储chair属性值。
到目前为止,我发现的最佳方法是在主席对象上使用名为“language_parent”的ndb.KeyProperty()和另一个名为“language”的字符串字段。然后,密钥属性可以查找原始主席实体。
这是此类场景的最佳架构吗?
答案 0 :(得分:0)
假设这是用于以所需语言显示名称,最好将任何语言字符串存储在实体本身中。例如,您可以使用以下格式的属性名称:
name-<ISO 639-5 code>
ISO 639-5是3 letter(alpha-3)语言代码的标准。这意味着英文名称将存储在名为“name-eng”的属性中,并存储为德语的“name-gem”。 “name”本身可以保留为原始/默认/本地语言名称,因此如果没有选择语言,您可以始终显示直接值。
当您检索实体时,您可以直接获取所设计的语言属性(如果存在),或者以“name-”开头的属性名称循环以查找所有可用语言。
使用NDB,您需要使用ndb.Expando class
。您可以使用特殊的_properties
属性获取属性列表。