需要在M.sqr中的qty上存储默认值,并且需要在手边显示默认输入值的数量的平方米。
从产品库存页面点击手头数量的更新按钮的时候 然后它应该显示我之前输入的值。
class stock_change_product_qty(osv.osv):
_inherit = 'stock.change.product.qty'
_columns = {
'new_quantity' : fields.float('Qty in Boxes'),
'squ_meter': fields.related('product_id','squ_meter', type='float', relation='product.product', string='Square Meter'),
'qty_char': fields.float('Qty in M.sqr', compute='_compute_qty_char'),
}
@api.depends('new_quantity', 'squ_meter')
def _compute_qty_char(self):
for record in self:
record.qty_char = record.new_quantity * record.squ_meter
view.xml用
<field name="name">update_product_quantity inherit</field>
<field name="model">stock.change.product.qty</field>
<field name="inherit_id" ref="stock.view_change_product_quantity"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='new_quantity']" position="attributes">
<attribute name="string">Qty in Boxes</attribute>
</xpath>
<xpath expr="//field[@name='new_quantity']" position="replace">
<field name="new_quantity"/>
<field name="squ_meter"/>
<field name="qty_char"/>
</xpath>
</field>
</record>
答案 0 :(得分:0)
解决方案是使用函数作为字段的默认值:
odoo V8
def _your_function(self, cr, uid, context=None):
your code here
...
...
...
return field_value
_defaults = {
'your_field' : _your_function,
}
odoo V7
@api.onchange('fieldx')
def do_stuff(self):
if self.fieldx == x:
self.fieldy = 'toto'
<强> @ api.onchange 强>
如果装饰器中指定的任何字段在表单中更改,则此装饰器将触发对装饰函数的调用:
QString fileName = QFileDialog::getOpenFileName(this,
tr("Open Image"),".",
tr("Image Files(*.png *.jpg *.jpeg *.bmp)"));
image = cv::imread(fileName.toUtf8().data());
if(!image.data){
qDebug()<< "Could not open or find the image";
return ;
}
QString status = QString::number(image.rows) + "x" +
QString::number(image.cols);
ui->label_2->setText(status);
//show
cv::namedWindow("Original Image");
cv::imshow("Original Image",image);
在上一个示例中,self对应于当前在表单上编辑的记录。在on_change上下文中,所有工作都在缓存中完成。因此,您可以在函数内部更改RecordSet,而无需担心更改数据库。这是@ api.depends
的主要区别在函数返回时,缓存和RecordSet之间的差异将返回到表单。