Как создать форму из модели, которая имеет ListProperty - PullRequest
2 голосов
/ 10 января 2010

В настоящее время я использую формы Django с Google App Engine, и у меня есть следующая модель:

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, поскольку для одного я не думаю, что существует встроенный элемент управления для множественного выбора, например группа флажков. В любом случае я не могу разобраться с этим свойством в исключаемых элементах, почему оно выдает эту ошибку.

1012 * ТИА *

Andrew

1 Ответ

5 голосов
/ 10 января 2010

Ваша проблема возникает задолго до того, как начинается задача «создать форму»: ListProperty не не разрешает список объектов модели (хотя я не могу найти это четко задокументировано в документации механизма приложений, Я все еще ищу в документах хорошее, ясное, однозначное утверждение об этом). Попробуйте изменить его (скажем) на список строк, и вы увидите, что все работает (я думаю, что выпадающий список - это то, что вы получите, если не исключите такое свойство).

Редактировать : обнаружил место в документах , где упоминается проблема, хотя она причудливо сформулирована - цитата с добавлением акцента:

Список может содержать значения любого из типы value , поддерживаемые хранилищу.

... Дело в том, что вы можете иметь в списке объекты любого из значений типов ... не эталонных типов, т.е. объектов, которые являются экземплярами некоторой модели .

Не могли бы вы вместо этого использовать список ключевых строк ...?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...