以编程方式将默认数据添加到自定义模块 - Odoo v9 社区
Programmatically add default data to custom module - Odoo v9 community
我有一个自定义模块,它继承了fleet.vehicle.log.services
模型
这是自定义模块。
我想做的是将默认数据添加到其中的两个字段,让我自己解释一下。
该模型具有以下必填字段:
vehicle_id
cost_id
cost_type
我 inherited/added 这些:
x_location_src_id
x_location_dest_id
这些是 stock
个位置,我想要的是将默认库存位置添加到此模型,但只是位置,而不是必填字段。
到目前为止,我已经在我的 data/location_data.xml
文件中这样尝试过:
<record id="location_default" model="fleet.vehicle.log.services">
<field name="vehicle_id">1</field>
<field name="cost_id">2</field>
<field name="cost_type">fuel</field>
<field name="x_location_src_id">ReparacionUnidades</field>
<field name="x_location_dest_id">ReparacionUnidades</field>
</record>
但这对我不起作用,因为正如我所说,我不需要前三个字段,只需要后两个字段。
因此,由于这是通过 QWeb/XMl 添加默认数据的唯一方法,我认为有一种方法可以克服这个问题,通过一些 attributes
或者可能以编程方式使用 python .
你知道如何用其他方式做到这一点吗?
正如我所说,我想绕过我必须添加这些其他字段的事实,因为这对我来说毫无意义。
有什么想法吗?
也许一些逻辑或属性进入 stock.locations
而不是直接进入这个 fleet.vehicle.log.services
模型?
在新的 api 中,您可以覆盖继承模型中的字段并使用静态值或函数分配默认值。这是一个例子
class Partner(models.Model):
_inherit = 'res.partner'
分配静态默认值
email = fields.Char(default='static@value.com')
分配程序默认值
def _email_default(self):
return 'programmatic@value.com'
email = fields.Char(default=_email_default)
使用旧的 api 你可以做类似的事情,使用不同的语法。
class Partner(osv.osv):
_inherit = 'res.partner'
_columns = {
'email': fields.char('Email')
}
分配默认值的编程方法
def _email_default(self, cr, uid, ctx={}):
return 'programmatic@value.com'
_defaults = {
'email': _email_default,
}
分配默认值的静态方法
_defaults = {
'email': 'static@value.com',
}
我有一个自定义模块,它继承了fleet.vehicle.log.services
模型
这是自定义模块。
我想做的是将默认数据添加到其中的两个字段,让我自己解释一下。
该模型具有以下必填字段:
vehicle_id
cost_id
cost_type
我 inherited/added 这些:
x_location_src_id
x_location_dest_id
这些是 stock
个位置,我想要的是将默认库存位置添加到此模型,但只是位置,而不是必填字段。
到目前为止,我已经在我的 data/location_data.xml
文件中这样尝试过:
<record id="location_default" model="fleet.vehicle.log.services">
<field name="vehicle_id">1</field>
<field name="cost_id">2</field>
<field name="cost_type">fuel</field>
<field name="x_location_src_id">ReparacionUnidades</field>
<field name="x_location_dest_id">ReparacionUnidades</field>
</record>
但这对我不起作用,因为正如我所说,我不需要前三个字段,只需要后两个字段。
因此,由于这是通过 QWeb/XMl 添加默认数据的唯一方法,我认为有一种方法可以克服这个问题,通过一些 attributes
或者可能以编程方式使用 python .
你知道如何用其他方式做到这一点吗?
正如我所说,我想绕过我必须添加这些其他字段的事实,因为这对我来说毫无意义。
有什么想法吗?
也许一些逻辑或属性进入 stock.locations
而不是直接进入这个 fleet.vehicle.log.services
模型?
在新的 api 中,您可以覆盖继承模型中的字段并使用静态值或函数分配默认值。这是一个例子
class Partner(models.Model):
_inherit = 'res.partner'
分配静态默认值
email = fields.Char(default='static@value.com')
分配程序默认值
def _email_default(self):
return 'programmatic@value.com'
email = fields.Char(default=_email_default)
使用旧的 api 你可以做类似的事情,使用不同的语法。
class Partner(osv.osv):
_inherit = 'res.partner'
_columns = {
'email': fields.char('Email')
}
分配默认值的编程方法
def _email_default(self, cr, uid, ctx={}):
return 'programmatic@value.com'
_defaults = {
'email': _email_default,
}
分配默认值的静态方法
_defaults = {
'email': 'static@value.com',
}