0

平台:django 1.0、google app engine、app-engine-patch、python 2.5.4

我正在尝试使用选择属性,因为我一直在 django 网站中使用

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)

现在,当我移至应用程序引擎时,我看不到这是可行的...

我得到一个

错误值错误

属性状态为3;必须是 ((1, u'Yet To Start'), (2, u'Running'), (3, u'Paused'), (4, u'Completed'), (5, u'Cancelled') 之一), (6, u'错误'))

我怎么解决这个问题?

4

2 回答 2

1

这是一个记录在案的问题,无法解决。简单地说,你在使用 GAE 时不能这样做。

Guido 在关闭上述票证时说以下内容:

非常抱歉,但我必须将其关闭为无效。

db.Property 类的选择参数的 App Engine 定义与 Django 定义不同。请参阅 http://code.google.com/appengine/docs/datastore/propertyclass.html#Property

我意识到,当您尝试从模型创建表单时,这可能会导致问题,但解决方案是使用自定义小部件覆盖表单字段并将所需选择的列表传递给小部件。(在 Rietveld 中有一个这样的例子,在 codereview/views.py 的类 SettingForm 中。)

于 2009-05-10T17:20:06.093 回答
0

正如 Paolo 所说,这不是选择参数在 App Engine 模型中的工作方式。不过,完全有可能编写自己的自定义属性,这些属性的行为可以随心所欲。这是一个类似的食谱中的示例:EnumProperty

于 2009-05-10T19:57:15.853 回答