谷歌应用引擎中的选择属性

时间:2009-05-10 17:13:21

标签: django google-app-engine choicefield

平台: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'))

我对这个问题感到非常不满?

2 个答案:

答案 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