You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo 16无法识别自定义Service模型,请求技术帮助

问题排查:Odoo16网站表单提交创建Service模型报错

背景

我在Odoo16中使用网站功能搭建产品服务注册表单,已完成自定义模块开发,定义了Service模型并编写了表单提交的控制器路由,但点击提交按钮时出现报错。已在manifest.py中添加'depends': ['base','website'],问题仍未解决。

模型代码(service/model.py)

from odoo import fields, models
class Service(models.Model):
    _name = "service.model"
    _description = "Service Model"

    name = fields.Char(string="Service Name", required=True)
    description = fields.Text(string="Description")
    price = fields.Float(string="Price", required=True)
    image = fields.Char(string="Image", attachment=True)

控制器代码(controllers/main.py)

@http.route('/create_service', type='http', auth='user', methods=['POST'], website=True, csrf=False)
def create_service(self, **post):
    # Get the form data
    name = post.get('name')
    description = post.get('description')
    price = post.get('price')
    image = post.get('image')

    # Create the service
    service = request.env['service_model'].create_service(name, description, float(price), image)
return request.redirect('/service_list_template') 

报错情况

点击表单提交按钮时触发报错(附图)


核心排查点及修复方案

  • 模型调用错误:
    Odoo模型默认创建方法是create(),且需传入字典格式参数,同时你写错了模型名称(应为service.model而非service_model)。修正代码:
    service = request.env['service.model'].create({
        'name': name,
        'description': description,
        'price': float(price) if price else 0.0,
        'image': image
    })
    
  • 语法缩进问题:
    控制器中return语句缩进错误,需与方法内代码保持同一缩进层级,否则会触发语法报错。
  • 字段类型安全处理:
    price从表单获取的是字符串,直接转float需做空值判断,避免非数字输入导致崩溃。
  • 权限配置缺失:
    需在模块security目录下的ir.model.access.csv中添加模型权限,确保登录用户有创建权限:
    id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
    access_service_model_user,Service Model User,model_service_model,base.group_user,1,1,1,1
    
  • CSRF安全问题:
    建议开启CSRF验证,在表单中添加令牌字段:
    <input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/>
    
    同时移除控制器路由中的csrf=False参数。

内容的提问来源于stack exchange,提问作者yaboiii23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 03:52:13