1

在 Google App Engine 上,我有一个这样的 webapp2 模型:

def Person(db.model):
    first_name = db.StringProperty()
    surname = db.StringProperty()
    languages_spoken = db. ListProperty()

但是,我希望将languages_spoken 列表限制为一个选项列表,比如英语、法语和西班牙语,这些选项会随着时间的推移而改变。使用 SQL,使用 person、language 和 person_language 表(或类似表)会很容易,但我不知道在这种情况下如何做,或者即使有可能。有什么建议吗?

4

3 回答 3

2

如果您正在启动一个 appengine 项目,请使用新的 NDB 而不是数据存储区。您可以使用带有以下参数的属性:选择和验证器:https ://developers.google.com/appengine/docs/python/ndb/properties

于 2012-11-06T22:55:43.197 回答
2

通过使用 NDB,您可以获得以下内容:

def Person(ndb.model):
    first_name = db.StringProperty()
    surname = db.StringProperty()
    languages_spoken = db. ListProperty(choices=['English', 'French', 'Spanish'])

有关它的更多信息,请查看NDB Property Options

但是,请注意,这些选项不能“即时”更改。当您的应用程序支持新选项时,您需要手动将其添加到模型中。

于 2012-11-07T07:37:25.560 回答
2

最后,由于其他两个答案的指示,我选择了这个:

from google.appengine.ext import ndb

languages = ['English', 'French', 'Spanish']

def Person(ndb.model):
    first_name = ndb.StringProperty()
    surname = ndb.StringProperty()
    languages_spoken = ndb.StringProperty(repeated=True, choices=languages)
于 2012-11-08T20:29:54.187 回答