平台:django 1.0,谷歌应用引擎,app-engine-patch,python 2.5.4
我想使用我一直在django网站上使用的choices属性
STATUS_CHOICES = ( (1, _('Yet To Start')), (2, _('Running')), (3, _('Paused')), (4, _('Completed')), (5, _('Cancelled')), (6, _('Error')),)
class Campaign(db.Model):
name = db.TextProperty()
status = db.IntegerProperty(choices=STATUS_CHOICES,default=2)
现在我已经转移到app-engine我不认为这是有效的......
我正在接受
BadValueError
物业状况为3;必须是其中之一 ((1,u'Yet To Start'),(2, u'Running'),(3,u'Paused'),(4, u'Completed'),(5,u'Cancelled'),(6, u'Error'))
我对这个问题感到非常不满?
答案 0 :(得分:1)
This is a documented problem无法解决。简而言之,使用GAE时无法做到这一点。
Guido在关闭上述票时说了以下内容:
我很抱歉,但我必须将其视为无效。
db.Property类的choice参数的App Engine定义是 与Django定义不同。看到 http://code.google.com/appengine/docs/datastore/propertyclass.html#Property
我意识到,当您尝试从中创建表单时,这可能会导致问题 模型,但解决方案是使用自定义小部件覆盖表单字段和 将所需选项列表传递给窗口小部件。 (这里有一个例子 Rietveld,在codereview / views.py中,类SettingForm。)
答案 1 :(得分:0)
正如Paolo所说,这不是选择参数在App Engine模型中的工作方式。尽管如此,完全可以编写自己的自定义属性。这是一个类似的食谱的例子:EnumProperty。