Odoo8 网站将输入值从产品页面传输到购物车页面
Odoo8 website transfer input value from product page to cart page
我正在 odoov8 做项目。我需要在产品页面上添加字段,然后创建一个包含该字段的订单。
更具体地说,我在产品页面上添加了开始日期字段,我可以在上面 select 一个日期,但是当我点击“添加到购物车”并转到购物车页面时,产品没有我 selected 的日期。
我需要数量字段具有的类似功能。
这是我用来在产品页面上显示日期字段的代码
<template id="product_quantity" inherit_id="website_sale.product">
<xpath expr="//a[@id='add_to_cart']" position="after">
<p>
<group colspan="2" col="2">
<label for="date">Rent Start Date
<input type="date" string="Rent Start Date" class="form-control" name="start_date" id="start_date" data-oe-model="ir.ui.view" data-oe-field="arch" />
</label>
</group>
</p>
</xpath>
</template>
这是它的样子:
Date field on product page
另外,我对用当前日期初始化此字段的方法很感兴趣。
感谢任何帮助。谢谢 !
您需要扩展模型 sale.order
并添加一个新字段,在您的情况下可能称之为 start_date
,但请确保它不存在于 sale.order
上。
你可以see an example of how to define such a field in the original Odoo v8 repo here. You can then set a default value for that field, see for example here.
如果我没记错的话,Add to cart
按钮会触发路线 '/shop/cart/cart_update'
处的控制器,因此您必须 extend the method cart_update
并根据需要更新销售订单。
我建议你扩展这个方法,做一个super
调用as it is for example done here(这只是一个例子,如果你从来没有这样做过,当然你需要调整它)并保存变量中 super 的 return 值,例如res = super(...)
。
在 super
之后您更改了销售订单(您需要以某种方式获取它,或者您检查销售订单是否已经在 res.qcontext
中可用(可能不会因为 parent returns a redirect), or you fetch it via request.website.sale_get_order()
which can be seen here.
更新销售订单后,您终于return res
。
按照这些思路应该可以做到:
@http.route()
def cart_update(self, product_id, add_qty=1, set_qty=0, **kw):
res = super(WebsiteSale, self).cart_update(product_id,
add_qty, set_qty, **kw)
order = request.website.sale_get_order()
# update your order now
# ...
# finally return
return res
我正在 odoov8 做项目。我需要在产品页面上添加字段,然后创建一个包含该字段的订单。
更具体地说,我在产品页面上添加了开始日期字段,我可以在上面 select 一个日期,但是当我点击“添加到购物车”并转到购物车页面时,产品没有我 selected 的日期。 我需要数量字段具有的类似功能。 这是我用来在产品页面上显示日期字段的代码
<template id="product_quantity" inherit_id="website_sale.product">
<xpath expr="//a[@id='add_to_cart']" position="after">
<p>
<group colspan="2" col="2">
<label for="date">Rent Start Date
<input type="date" string="Rent Start Date" class="form-control" name="start_date" id="start_date" data-oe-model="ir.ui.view" data-oe-field="arch" />
</label>
</group>
</p>
</xpath>
</template>
这是它的样子: Date field on product page 另外,我对用当前日期初始化此字段的方法很感兴趣。
感谢任何帮助。谢谢 !
您需要扩展模型 sale.order
并添加一个新字段,在您的情况下可能称之为 start_date
,但请确保它不存在于 sale.order
上。
你可以see an example of how to define such a field in the original Odoo v8 repo here. You can then set a default value for that field, see for example here.
如果我没记错的话,Add to cart
按钮会触发路线 '/shop/cart/cart_update'
处的控制器,因此您必须 extend the method cart_update
并根据需要更新销售订单。
我建议你扩展这个方法,做一个super
调用as it is for example done here(这只是一个例子,如果你从来没有这样做过,当然你需要调整它)并保存变量中 super 的 return 值,例如res = super(...)
。
在 super
之后您更改了销售订单(您需要以某种方式获取它,或者您检查销售订单是否已经在 res.qcontext
中可用(可能不会因为 parent returns a redirect), or you fetch it via request.website.sale_get_order()
which can be seen here.
更新销售订单后,您终于return res
。
按照这些思路应该可以做到:
@http.route()
def cart_update(self, product_id, add_qty=1, set_qty=0, **kw):
res = super(WebsiteSale, self).cart_update(product_id,
add_qty, set_qty, **kw)
order = request.website.sale_get_order()
# update your order now
# ...
# finally return
return res