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>