如何从odoo中的下拉列表中保存数据
How to save data from a drop-down list in odoo
在我的 odoo 9 网站的一个页面中,我有一个下拉列表(在 xml 视图中使用 select 标签),如何保存用户选择的选项?
代码:
<select type="text" name="delivery_time" class="form-control" t-att-value="website_sale_order.delivery_time">
<option value="1">8 AM - 10 AM</option>
<option value="2">10 AM - 12 PM</option>
<option value="3">12 PM - 2 PM</option>
<option value="4">2 PM - 4 PM</option>
<option value="5">4 PM - 6 PM</option>
</select
型号:
class odss_sale_order(models.Model):
_inherit = "sale.order"
delivery_time = fields.Char()
如您所见,我已经尝试在模型中做一些事情,所以它可以工作,但我似乎无法理解,知道为什么它不起作用吗?
编辑:我正在寻找类似于 this 的答案,但针对 Odoo 而不是 PHP。
如果您需要与网页中的模型进行交互,您可能需要创建一个控制器,它可以包含 python 代码并允许您的网页与您的模型进行交互(在您的模块或一般跨 Odoo)。在简单的层面上,控制器可以进入您的模块主文件夹(即 /mymodule/my_template_controller.py)并在您的 init.py 文件中声明(导入 my_template_controller)。然后,您可以在控制器中设置一个与您的模板 ID 匹配的路由,并在 XML 页面上创建表单 post 到控制器,允许 python 代码为 运行 和要从模型中保存或调用的数据行。
具体来说,使用控制器中的 ORM 在模型中创建新行的代码首先是以下形式:
<openerp>
<data>
<template id="sales_order" name="Sales Order">
<t t-call="website.layout">
<form action='/odss/sales_order/' method="POST" enctype="multipart/form-data">
<select type="text" name="delivery_time" class="form-control">
<option value="1">8 AM - 10 AM</option>
<option value="2">10 AM - 12 PM</option>
<option value="3">12 PM - 2 PM</option>
<option value="4">2 PM - 4 PM</option>
<option value="5">4 PM - 6 PM</option>
</select>
</form>
</t>
</template>
</data>
</openerp>
然后在你的控制器中(随便调用它并声明它 init.py):
class SalesOrderController(http.Controller):
@http.route('/odss/sales_order/', auth='user', website=True, csrf=False)
def create_sales_order(self, delivery_time):
odss_sales_order = http.request.env['sale.orders']
new_so = odss_sales_order.create({
'delivery_Time': delivery_time,
})
return http.request.render('module_name.sales_order', {
})
Odoo 确实有一些不错的文档来解释这个过程。首先是如何设置网站,使用控制器作为视图和模型之间的中介:
http://www.odoo.com/documentation/9.0/howtos/website.html
第二个是如何使用所谓的对象关系模型 (ORM),这是 Odoo 特定的代码,允许从控制器调用数据并将数据保存到数据库。一旦你有一个控制器连接到你的网页(通过路由),那么你可以 post 数据到你的表单上的路由并使用 ORM 将它保存到控制器中的数据库:
https://www.odoo.com/documentation/9.0/reference/orm.html
Odoo 模块可以像任何其他 Model/Controller/View 应用程序一样构建,例如 Ruby on Rails,它实际上非常实用。
在我的 odoo 9 网站的一个页面中,我有一个下拉列表(在 xml 视图中使用 select 标签),如何保存用户选择的选项?
代码:
<select type="text" name="delivery_time" class="form-control" t-att-value="website_sale_order.delivery_time">
<option value="1">8 AM - 10 AM</option>
<option value="2">10 AM - 12 PM</option>
<option value="3">12 PM - 2 PM</option>
<option value="4">2 PM - 4 PM</option>
<option value="5">4 PM - 6 PM</option>
</select
型号:
class odss_sale_order(models.Model):
_inherit = "sale.order"
delivery_time = fields.Char()
如您所见,我已经尝试在模型中做一些事情,所以它可以工作,但我似乎无法理解,知道为什么它不起作用吗?
编辑:我正在寻找类似于 this 的答案,但针对 Odoo 而不是 PHP。
如果您需要与网页中的模型进行交互,您可能需要创建一个控制器,它可以包含 python 代码并允许您的网页与您的模型进行交互(在您的模块或一般跨 Odoo)。在简单的层面上,控制器可以进入您的模块主文件夹(即 /mymodule/my_template_controller.py)并在您的 init.py 文件中声明(导入 my_template_controller)。然后,您可以在控制器中设置一个与您的模板 ID 匹配的路由,并在 XML 页面上创建表单 post 到控制器,允许 python 代码为 运行 和要从模型中保存或调用的数据行。
具体来说,使用控制器中的 ORM 在模型中创建新行的代码首先是以下形式:
<openerp>
<data>
<template id="sales_order" name="Sales Order">
<t t-call="website.layout">
<form action='/odss/sales_order/' method="POST" enctype="multipart/form-data">
<select type="text" name="delivery_time" class="form-control">
<option value="1">8 AM - 10 AM</option>
<option value="2">10 AM - 12 PM</option>
<option value="3">12 PM - 2 PM</option>
<option value="4">2 PM - 4 PM</option>
<option value="5">4 PM - 6 PM</option>
</select>
</form>
</t>
</template>
</data>
</openerp>
然后在你的控制器中(随便调用它并声明它 init.py):
class SalesOrderController(http.Controller):
@http.route('/odss/sales_order/', auth='user', website=True, csrf=False)
def create_sales_order(self, delivery_time):
odss_sales_order = http.request.env['sale.orders']
new_so = odss_sales_order.create({
'delivery_Time': delivery_time,
})
return http.request.render('module_name.sales_order', {
})
Odoo 确实有一些不错的文档来解释这个过程。首先是如何设置网站,使用控制器作为视图和模型之间的中介:
http://www.odoo.com/documentation/9.0/howtos/website.html
第二个是如何使用所谓的对象关系模型 (ORM),这是 Odoo 特定的代码,允许从控制器调用数据并将数据保存到数据库。一旦你有一个控制器连接到你的网页(通过路由),那么你可以 post 数据到你的表单上的路由并使用 ORM 将它保存到控制器中的数据库:
https://www.odoo.com/documentation/9.0/reference/orm.html
Odoo 模块可以像任何其他 Model/Controller/View 应用程序一样构建,例如 Ruby on Rails,它实际上非常实用。