Plone: ​​почему в dexterity.EditForm попытка отключить виджет вызывает ошибку ConstraintNotSatisfied?

Я пытаюсь отключить виджет в dexterity.EditForm, но получаю сообщение об ошибке.

Вот часть моего класса интерфейса с конкретным виджетом, который я хочу отключить

class IRestaurant(IPlace):

    restaurant_code = schema.TextLine(title=_(u""),
                                      required=False,
                        )

IPlace — это form.Schema, от которой наследуется IRestaurant. (из plone.directives)

Вот код I для класса dexterity.EditForm:

class Edit(dexterity.EditForm):
    grok.context(IRestaurant)

    def updateWidgets(self):
        super(Edit, self).updateWidgets()
        self.widgets['restaurant_code'].disabled = True

Когда я захожу в форму редактирования, я получаю сообщение об ошибке:

ConstraintNotSatisfied: True

Почему возникает эта ошибка и как я могу это исправить?

Кроме того, я использую версию Plone 4.3.5.

Изменить: когда я попытался напечатать тип объекта, которым был self.widgets['restaurant_code'].disabled, он сказал, что это объект NoneType.


person Patrick Downey    schedule 04.06.2015    source источник


Ответы (1)


Возможно, вам повезет больше, если вы воспользуетесь свойством режима.

Попробуйте что-то вроде этого:

from z3c.form.interfaces import HIDDEN_MODE

def updateWidgets(self):
    super(Edit, self).updateWidgets()
    self.widgets['restaurant_code'].mode = HIDDEN_MODE
person vangheem    schedule 04.06.2015
comment
Тогда я должен был использовать свойство режима. Я пытаюсь сделать форму редактирования доступной для членов роли, но для редактирования доступны только определенные поля, но при этом отображаются нередактируемые поля в форме. Есть защита от записи, которую вы можете определить (термин?) над виджетом в интерфейсе, но она скрывает поле из формы, и я хочу, чтобы поле было отключено, а не скрыто. Хотя ваше предложение очень помогло. Однако вместо использования HIDDEN_MODE я нашел DISPLAY_MODE (импортированный из z3c.form.interfaces). Это позволило мне отобразить поле, сделав его нередактируемым. - person Patrick Downey; 06.06.2015