如何从具有ListProperty的Model创建Form

时间:2010-01-10 16:19:06

标签: python django google-app-engine

我目前正在使用带有Google App Engine的Django表单,我的模型如下:

class Menu(db.Model):
    name = db.StringProperty(required=True)
    is_special = db.BooleanProperty()
    menu_items =  db.ListProperty(MenuItem)

我有一个以下的MenuForm:

class MenuForm(djangoforms.ModelForm):
    class Meta:
        model = Menu
        exclude = ['added_by','menu_items']

当我运行时,我收到以下错误:

Exception Type:     ValueError
Exception Value:    Item type MenuItem is not acceptable

我想创建表单,并省略了menu_items属性,因为我不认为有多个选项的内置控件,如一组复选框。无论哪种方式,我都无法理解排除项目中的此属性为什么会抛出此错误。

TIA

安德鲁

1 个答案:

答案 0 :(得分:5)

在“创建表单”任务开始之前,问题就出现了:ListProperty 允许模型实体列表(尽管我在应用程序中无法清楚地记录这一点)引擎文档,我仍然在文档中查找关于该文档的一个好的,清晰的,明确的声明。尝试将其更改为(比方说)字符串列表,您将看到一切正常(我相信如果您不排除此类属性,则会获得下拉列表。)

修改:找到提及问题的docs中的位置,虽然它的措辞比较古怪 - 引用更加强调:

  

列表可以包含任何值   支持的类型   数据存储。

...点是,您可以在列表中包含任何类型的对象...而不是引用那些,即实体是一些模特。

您可以使用关键字符串列表,而不是......?