在添加dexterity对象时,我有两个字段,我们希望根据用户属性只显示一个字段,该字段保存在成员数据中。
架构定义有点像:
class IMyApplication(form.schema):
fieldA = schema.textline(...)
fieldB = schema.textline(...)
我想根据用户属性向用户显示这两个字段中的一个字段。
非常感谢指南/链接/建议。
答案 0 :(得分:2)
首先,请考虑DX-docu
中自定义添加/修改表单的示例然后,您可以在表单的updateWidgets方法中隐藏字段。
示例代码(未经测试):
from plone.dexterity.browser.add import DefaultAddForm
from z3c.form import interfaces
class AddForm(DefaultAddForm):
def updateWidgets(self):
super(AddForm, self).updateWidgets()
if my_condition:
self.widgets['myfield'].mode = interfaces.HIDDEN_MODE
由于您必须在add
和edit
表单中执行相同的操作,因此您可以使用自定义创建mixin类。