基本内容类型表单
项目描述
CMS Form
基本网站内容表单框架。允许以简单的方式定义前端表单。
如果您厌倦了每次都要重新定义odoo网站的编辑表单或搜索表单,这个模块就是您要找的。
功能
自动表单生成(创建、编辑、搜索)
自动生成路由(创建、编辑、搜索)
- 基于字段类型的自动机制
小部件渲染
字段值加载(从现有实例或请求中获取)
字段值提取(从请求中获取)
字段值写入(写入现有实例)
高度可定制
适用于每个Odoo模型
即使没有模型也可以使用
- 为继承自website.published.mixin的模型添加实用属性
cms_add_url:跳转到创建表单视图。默认为/cms/form/create/my.model
cms_edit_url:跳转到编辑表单视图。默认为/cms/form/edit/my.model/model_id
cms_search_url:跳转到搜索表单视图。默认为/cms/form/search/my.model
使用方法
创建/编辑表单
只需继承自cms.form,为您的模型添加表单。以下是一个针对合作伙伴的快速示例
class PartnerForm(models.AbstractModel):
_name = 'cms.form.res.partner'
_inherit = 'cms.form'
_form_model = 'res.partner'
_form_model_fields = ('name', 'country_id')
_form_required_fields = ('name', 'country_id')
在这种情况下,您将拥有以下特征的表单
与res.partner模型一起工作
只有name和country_id字段
两个字段都是必需的(没有这些值之一就无法提交表单)
这就是结果
表单将在以下路由上自动可用
/cms/form/create/res.partner 用于创建新合作伙伴
/cms/form/edit/res.partner/1 编辑现有合作伙伴(本例中合作伙伴ID为1)
注意:如果表单的名称为 cms.form. + 模型名称,如 cms.form.res.partner,则默认通用路由将正常工作。如果您愿意,可以轻松定义自己的控制器,并给表单一个不同的名称,并拥有更优雅的路由,如 `/partner/edit/partner-slug-1`。请参阅 cms_form_example。
默认情况下,表单以水平Twitter Bootstrap表单的形式渲染,但当然您可以提供自己的模板。默认情况下,字段按模型架构中的顺序排序。您可以使用 _form_fields_order 进行调整。
具有额外控制字段的表单
想象一下,您想在合作伙伴创建后通知合作伙伴,但仅当您真的需要时。
上述表单可以扩展,添加不是 _form_model 架构部分的额外字段
class PartnerForm(models.AbstractModel):
_name = 'cms.form.res.partner'
_inherit = 'cms.form'
_form_model = 'res.partner'
_form_model_fields = ('name', 'country_id', 'email')
_form_required_fields = ('name', 'country_id', 'email')
notify_partner = fields.Boolean()
def form_after_create_or_update(self, values, extra_values):
if extra_values.get('notify_partner'):
# do what you want here...
notify_partner 将包含在表单中,但在创建和写入时会将其丢弃。尽管如此,您可以使用钩子 form_after_create_or_update 在记录创建或更新前后将其用作控制标志,就像在这个示例中看到的那样。
搜索表单
只需从 cms.form.search 继承即可为您自己的模型添加表单。以下是对合作伙伴的快速示例
class PartnerSearchForm(models.AbstractModel):
"""Partner model search form."""
_name = 'cms.form.search.res.partner'
_inherit = 'cms.form.search'
_form_model = 'res.partner'
_form_model_fields = ('name', 'country_id', )
_form_fields_order = ('country_id', 'name', )
表单将在以下位置自动可用:/cms/form/search/res.partner。
注意:如果表单的名称为 `cms.form.search + 模型名称,如 cms.form.search.res.partner,则默认通用路由将正常工作。如果您愿意,可以轻松定义自己的控制器,并给表单一个不同的名称,并拥有更优雅的路由,如 /partners。请参阅 cms_form_example。
主/从字段
现在的典型用例:您想根据其他字段的值显示/隐藏字段。对于最简单的情况,您不需要写一行JS。您可以这样做
class PartnerForm(models.AbstractModel):
_name = 'cms.form.res.partner'
_inherit = 'cms.form'
_form_model = 'res.partner'
_form_model_fields = ('name', 'type', 'foo')
def _form_master_slave_info(self):
info = self._super._form_master_slave_info()
info.update({
# master field
'type':{
# actions
'hide': {
# slave field: action values
'foo': ('contact', ),
},
'show': {
'foo': ('address', 'invoice', ),
}
},
})
return info
在这里,我们声明了
当 type 字段等于 contact 时 -> 隐藏 foo 字段
当 type 字段等于 address 或 invoice 时 -> 显示 foo 字段
已知问题/路线图
添加更多测试,特别是每个小部件和字段类型
提供更好的图像和文件字段小部件
o2m字段:要进行全面测试
将小部件移动到抽象模型中
搜索表单:以巧妙的方式生成默认搜索域
添加从水平表单切换到垂直表单的简单方法
提供更多示例
x2x字段:允许创建子项
处理API onchanges
支持Python表达式进入主/从规则
错误跟踪器
错误在 GitHub Issues 上跟踪。如果在那里遇到问题,请检查您的问题是否已经报告。如果您是第一个发现它的,请通过提供详细且受欢迎的反馈来帮助我们解决这个问题。
致谢
赞助商
贡献者
Simone Orsi <simone.orsi@camptocamp.com>
维护者
本模块由OCA维护。
OCA,或Odoo社区协会,是一个非营利组织,其使命是支持Odoo功能的协作开发并推广其广泛使用。
为贡献此模块,请访问 https://odoo-community.org。
项目详情
哈希值 for odoo9_addon_cms_form-9.0.1.0.0-py2-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fd06c7730486cacef276ee8b11a9e58c2ce83478903c9e10c5a5f2291614eb67 |
|
MD5 | fb9111e8f558f5b2747af62d3be5c5f6 |
|
BLAKE2b-256 | a250c957d071c50557f43d7a9e40aa30aff9eb3f47cc8d7bbf5802519b87f7b0 |