Google app engine 在Google App Engine数据存储中使用受约束列表的模型

Google app engine 在Google App Engine数据存储中使用受约束列表的模型,google-app-engine,nosql,Google App Engine,Nosql,在Google应用程序引擎上,我有一个webapp2模型,如下所示: def Person(db.model): first_name = db.StringProperty() surname = db.StringProperty() languages_spoken = db. ListProperty() 但是,我希望将语言列表限制为一个选项列表,比如英语、法语和西班牙语,这些选项可以随着时间的推移而改变。使用SQL,在person、language和perso

在Google应用程序引擎上,我有一个webapp2模型,如下所示:

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

但是,我希望将语言列表限制为一个选项列表,比如英语、法语和西班牙语,这些选项可以随着时间的推移而改变。使用SQL,在person、language和person_语言表或类似的表中,这将很容易,但我不知道在这种情况下如何做,甚至不知道是否可能。有任何建议吗?

如果您正在启动appengine项目,请使用新的NDB而不是数据存储。您可以将属性与参数一起使用,例如:选项和验证器:

如果要启动appengine项目,请使用新的NDB而不是数据存储。您可以将属性与参数一起使用,例如:选项和验证器:

通过使用NDB,您可以拥有以下内容:

def Person(ndb.model):
    first_name = db.StringProperty()
    surname = db.StringProperty()
    languages_spoken = db. ListProperty(choices=['English', 'French', 'Spanish'])
有关它的更多信息,请查看


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

通过使用NDB,您可以实现以下功能:

def Person(ndb.model):
    first_name = db.StringProperty()
    surname = db.StringProperty()
    languages_spoken = db. ListProperty(choices=['English', 'French', 'Spanish'])
有关它的更多信息,请查看


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

最后,多亏了另外两个答案的提示,我还是这样做了:

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)

最后,多亏了另外两个答案中的提示,我坚持了这一点:

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)