我在odoov 8的项目工作。我需要在产品页面上添加一个字段,然后创建一个订单,其中包括这个字段。
更具体地说,我已经在产品页面上添加了开始日期字段,我可以在上面选择一个日期,但当我点击“添加到购物车”,我去购物车页面,产品没有我选择的日期。我需要数量字段具有类似的功能。
下面是我用来在产品页面上显示日期字段的代码:
<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>
下面是它的外观:
此外,我对用当前日期初始化此字段的方法很感兴趣。
任何帮助我都感激不尽。谢谢!
1条答案
按热度按时间y3bcpkx11#
您需要扩展模型
sale.order
并添加一个新字段,在您的情况下可以将其命名为start_date
,但要确保它在sale.order
上不存在。你可以在这里看到一个如何在原始的Odoo v8 repo中定义这样一个字段的例子,然后你可以为这个字段设置一个默认值,参见这里的例子。
如果我没记错的话,
Add to cart
按钮触发了路线'/shop/cart/cart_update'
处的控制器,因此您将不得不扩展方法cart_update
并根据需要更新销售订单。我建议您扩展该方法,执行
super
调用,就像这里所做的那样(这只是一个示例,以防您从未这样做过,当然您需要调整它),并将super的返回值保存在一个变量中,例如res = super(...)
。在
super
之后,您更改了销售订单(您需要以某种方式获取它,或者检查销售订单是否在res.qcontext
中可用(可能不会,因为父级返回了重定向),或者通过request.website.sale_get_order()
获取它,可以在此处看到。在更新销售订单之后,您终于
return res
。应该采取以下措施: