Python 仅选择多个字段上的可用数据
我创建了一个模块Python 仅选择多个字段上的可用数据,python,python-2.7,openerp,Python,Python 2.7,Openerp,我创建了一个模块asset.management.handlovery和asset.management.handlovery.lines,将所有选定的资产保存到该模块中 我已经完成了对多个字段的数据过滤,如下所示。 这是我的.py代码: asset_name_id = fields.Many2one('account.asset.asset', string = "Asset", required = True) serial_number_id = fields.Many2one('acc
asset.management.handlovery
和asset.management.handlovery.lines
,将所有选定的资产保存到该模块中
我已经完成了对多个字段的数据过滤,如下所示。
这是我的.py代码:
asset_name_id = fields.Many2one('account.asset.asset', string = "Asset",
required = True)
serial_number_id = fields.Many2one('account.asset.asset.line', string =
"Serial number", required = True)
my.xml代码:
<field name="asset_name_id"/>
<field name="serial_number_id" domain = "[('serial_no_id', '=',
asset_name_id)]"/>
这是我在xml中对asset.management.Transmission的表单视图
<!--Hand over form view-->
<record model="ir.ui.view" id="handover_form_view">
<field name="name">handover.form.view</field>
<field name="model">asset.management.handover</field>
<field name="arch" type="xml">
<form>
<header>
<button name="button_transfer" string="Transfer"
type="object" state="cancel"/>
<button name="button_cancel" string="Cancel"
type="object"/>
<field name="state" widget="statusbar"/>
</header>
<sheet>
<group>
<group>
<field name="date"/>
<field name="issuer_company_id"
placeholder="Company name" domain="[('is_company','=',True)]"/>
<field name="issuer_id" placeholder="Employee's
Name" domain = "[('address_id', '=', issuer_company_id)]"/>
<field name="source_loc" domain = "
[('partner_id', '=', issuer_company_id)]"/>
<field name="issuer_email"/>
<field name="remarks"/>
</group>
<group>
<field name="transfer_type"/>
<field name="recipient_company_id"
placeholder="Company name" domain="[('is_company','=',True)]"/>
<field name="recipient_id"
placeholder="Employee's Name" domain = "[('address_id', '=',
recipient_company_id)]"/>
<field name="destination_loc" domain = "
[('partner_id', '=', recipient_company_id)]"/>
<field name="custodian_id"/>
<field name="processed_by"/>
</group>
<field name="lines_ids">
<tree editable="bottom">
<field name="asset_name_id"/>
<field name="serial_number_id" domain = "
[('serial_no_id', '=', asset_name_id)]"/>
<field name="model"/>
<field name="condition_id"/>
<field name="state"/>
<field name="asset_pic"/>
<field name="total" sum="total" string =
"Total Asset"/>
</tree>
<form>
<sheet>
<group>
<group>
<field name="asset_name_id"/>
<field name="serial_number_id"
domain = "[('serial_no_id', '=', asset_name_id)]"/>
<field name="model"/>
<field name="condition_id"/>
</group>
<group>
<field name="state"/>
<field name="asset_pic"/>
</group>
</group>
</sheet>
</form>
</field>
</group>
</sheet>
</form>
</field>
</record>
交接表
资产管理、移交
一种简单的方法是在write
或create
方法上检查值。如果一个序列存在于多个产品上,则引发异常
另一种方法是设置动态域。例如,您可以说:
当field1
更改时,我希望能够仅从field2
因此,定义一个onchange
并返回
返回{'domain':{'field_id':[('id','notin',used_serials)]}
在
used\u serials
上,您将拥有已使用序列的ID。一种简单的方法是在write
或create
方法上检查值。如果一个序列存在于多个产品上,则引发异常
另一种方法是设置动态域。例如,您可以说:
当field1
更改时,我希望能够仅从field2
因此,定义一个onchange
并返回
返回{'domain':{'field_id':[('id','notin',used_serials)]}
在
used\u serials
上,您将拥有您已经使用的序列的ID。您需要跟踪父模型上所有已使用的序列号(例如asset.management.handover
),然后您可以使用域排除该列表中存在的所有序列号。如果您可以为您的移交
和移交.行
型号I提供完整代码,则可能能够提供更多帮助:)完成编辑后,您需要跟踪父型号上所有使用的序列号(例如资产管理.移交
),然后您可以使用域来排除该列表中存在的所有序列号。如果您可以为您的移交
和移交提供完整的代码。行
型号I可能可以帮助更多:)完成编辑sir@api.onchange('serial_number_id')def onchange_serial(self):res={}如果self.serial_number_id:res['domain']={'account.asset.asset.line':[('id','in',self.serial\u number\u id.id)]print res return res我的语法正确吗?我已经得到了已经使用的id。接下来我该怎么做?@api.onchange('serial\u number\u id')def onchange\u serial(self):res={}如果self.serial\u number\u id:res['domain']={account.asset.asset.line':[('id','in',self.serial\u number\u id.id)]print res return res我的语法正确吗?我已经获取了已经获取的id。下一步该怎么办?
<!--Hand over form view-->
<record model="ir.ui.view" id="handover_form_view">
<field name="name">handover.form.view</field>
<field name="model">asset.management.handover</field>
<field name="arch" type="xml">
<form>
<header>
<button name="button_transfer" string="Transfer"
type="object" state="cancel"/>
<button name="button_cancel" string="Cancel"
type="object"/>
<field name="state" widget="statusbar"/>
</header>
<sheet>
<group>
<group>
<field name="date"/>
<field name="issuer_company_id"
placeholder="Company name" domain="[('is_company','=',True)]"/>
<field name="issuer_id" placeholder="Employee's
Name" domain = "[('address_id', '=', issuer_company_id)]"/>
<field name="source_loc" domain = "
[('partner_id', '=', issuer_company_id)]"/>
<field name="issuer_email"/>
<field name="remarks"/>
</group>
<group>
<field name="transfer_type"/>
<field name="recipient_company_id"
placeholder="Company name" domain="[('is_company','=',True)]"/>
<field name="recipient_id"
placeholder="Employee's Name" domain = "[('address_id', '=',
recipient_company_id)]"/>
<field name="destination_loc" domain = "
[('partner_id', '=', recipient_company_id)]"/>
<field name="custodian_id"/>
<field name="processed_by"/>
</group>
<field name="lines_ids">
<tree editable="bottom">
<field name="asset_name_id"/>
<field name="serial_number_id" domain = "
[('serial_no_id', '=', asset_name_id)]"/>
<field name="model"/>
<field name="condition_id"/>
<field name="state"/>
<field name="asset_pic"/>
<field name="total" sum="total" string =
"Total Asset"/>
</tree>
<form>
<sheet>
<group>
<group>
<field name="asset_name_id"/>
<field name="serial_number_id"
domain = "[('serial_no_id', '=', asset_name_id)]"/>
<field name="model"/>
<field name="condition_id"/>
</group>
<group>
<field name="state"/>
<field name="asset_pic"/>
</group>
</group>
</sheet>
</form>
</field>
</group>
</sheet>
</form>
</field>
</record>