我有这个方法继承自模块stock.location
的{{1}}模型上的fleet.vehicle
:
fleet
所以,这会将class fleet_vehicle(models.Model):
_inherit = 'fleet.vehicle'
location_id = fields.Many2one("stock.location", string="Almacén Origen", store=True)
模型转化为stock.location
模型,这是我的观点:
fleet.vehicle
到目前为止,非常好,现在,每次从 <record model='ir.ui.view' id='fleet_vehicle_form'>
<field name="name">fleet.vehicle.form</field>
<field name="model">fleet.vehicle</field>
<field name="inherit_id" ref='fleet.fleet_vehicle_form'/>
<field name="arch" type="xml">
<xpath expr="//form/sheet/group" position="after">
<group string="Almacén correspondiente" col="2">
<field name="location_id"/>
</group>
</xpath>
</field>
</record>
表格中将新车辆添加到数据库时,我都被要求创建一个位置。
正如您所看到的,我已经添加了模型和字段以添加位置,但是,每次保存新车辆时如何创建此位置?
例如,我创建了车辆fleet.vehicle
,这应该在系统中自动创建一个名为Opel/Astra
的新位置,我知道如何声明默认位置,源位置和目标位置,例如这样:
Opel/Astra
然后从字段中调用函数,如:
def _static_location(self):
return self.env.ref('fleet_stock.location_stock')
当然在 x_location_dest_id = fields.Many2one('stock.location', string=u'Ubicacion Destino de Productos', required=True,
readonly=False, default=_static_location,
help="Location where the system will look for components.")
文件夹中的xml文件中声明了这一点,如:
data
现在,我如何“默认”此行为,而不是已经存在的位置,而是根据<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<record id="location_stock" model="stock.location">
<field name="name">ReparacionUnidades</field>
<field name="location_id" ref="stock.stock_location_locations_virtual"/>
<field name="usage">production</field>
<field name="company_id"></field>
</record>
</data>
</openerp>
车名创建一个新行为?
答案 0 :(得分:2)
我想,你需要根据车名创建新的stock.location。 但我很困惑你为什么在你的例子中使用数据文件。
您需要做的事情:搜索已stock.location
名称的fleet.vehicle
。如果搜索成功,请设置location_id
。如果没有创建新的stock.location
并分配给location_id
。我在这里看不到问题,为什么你不能自己做这个?
因为我不知道你的系统是如何工作的所以我不能给你代码。但是您需要onchange
上的location_id
方法。如果设置了名称,则可以搜索stock.location
或创建并分配新名称。