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