Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 30, 2010 15:32:08

Sleepwalker
От:
Зарегистрирован: 2008-07-18
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

BB удаление из списка

На сколько я знаю, то для филда Dict стандартного виджета нет. Поэтому и

СomponentLookupError: ((<zope.schema._field.Dict object at 0x03411190>, <zope.publisher.browser.BrowserRequest instance URL=http://127.0.0.1:8080/%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D1%8B/%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B%20%D0%BF%D0%B8%D1%82%D0%B0%D0%BD%D0%B8%D1%8F/propcontainer/add_tboolinfo>), <InterfaceClass zope.formlib.interfaces.IInputWidget>, u'')

Тут нужен либо свой виджет написать, либо при генерации формы добавления/редактирования обьекта не использовать этот филд, и значение ему как-то по другому присваивать



Офлайн

#2 Сен. 30, 2010 15:36:27

LightOfMooN
От:
Зарегистрирован: 2010-09-11
Сообщения: 127
Репутация: +  0  -
Профиль   Отправить e-mail  

BB удаление из списка

Если смотреть конкретно мой продукт, то у меня он изначально пустой, а потом заполняется посредством кода, который не совсем работает =) и обсуждается в этой и соседней теме))
Хотелось бы вообще убрать виджет. Насколько я понимаю, для надо заменить

form_fields = form.Fields(ITBool_Info)
на список Fields?
Но что писать в данном списке?



Отредактировано (Сен. 30, 2010 15:39:18)

Офлайн

#3 Сен. 30, 2010 15:44:40

Sleepwalker
От:
Зарегистрирован: 2008-07-18
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

BB удаление из списка

Можеш написать так:

form_fields = form.Fields(ITBool_Info).omit('props')
Тогда при генерации формы поле props не буде отображаться, а соответственно не будет искатся виджет которого нет.



Офлайн

#4 Сен. 30, 2010 15:48:52

LightOfMooN
От:
Зарегистрирован: 2010-09-11
Сообщения: 127
Репутация: +  0  -
Профиль   Отправить e-mail  

BB удаление из списка

Sleepwalker
Можеш написать так:
form_fields = form.Fields(ITBool_Info).omit('props')
Тогда при генерации формы поле props не буде отображаться, а соответственно не будет искатся виджет которого нет.
Спасибо, форма сработала.
Осталось разобраться, как всё же заставить BB всунуть элемент в список без использования removeSecurityProxy(), а потом ещё и сохранить результат после рестарта сервера =)



Офлайн

#5 Сен. 30, 2010 15:49:39

Sleepwalker
От:
Зарегистрирован: 2008-07-18
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

BB удаление из списка

Когда нужно сгенерировать форму не по интерфейсу(схеме) а просто из набора поле можно писать:

from zope.formlib import AddForm, Fields
from zope.schema import Text, TextLine

class SampleForm(AddForm):

def __init__(self, context, request):
super(SampleForm, self).__init__(context, request)
self.form_fields = Fields(TextLine(__name__='title', title=u'Title'),
Text(__name___='description', title=u'Description')
)
Создаст форму добавления с 2 полями: title и description



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version