Odoo如何在one2many字段

时间:2017-09-19 07:49:47

标签: python-2.7 openerp odoo-9 many-to-one odoo-view

我有很多字段 name_id 。通常当我在此字段中的 my_model.xml 代码中使用它时,我可以从 my.model.line 中写入的所有值中进行选择。 在这种情况下,我想过滤值并查看仅在当前my.model中写入的这些值的列表。

my_model.xml

    <record model="ir.ui.view" id="view_my_model_form">
        <field name="name">my.model.form</field>
        <field name="model">my.model</field>
        <field name="arch" type="xml">
            <form string="My Model">
            <header>

                        <field name="my_model_line">
                            <tree>
                                <field name="name"/>
                            </tree>
                         </field>
               <notebook>
                    <page>
                        <field name="supply_conditions_status">
            <tree string="My model Lines">
                                <field name="name_id"/>
                            </tree>

类:

class SupplyConditions(models.Model):
    _name = 'supply.conditions'

    name_id = fields.Many2one('my.model.line', string='Product')
    model_id = fields.Many2one('my.model')


class MyModelLine(models.Model):
    _name = 'my.model.line'

    name = fields.Char('Name')
    my_model_id = fields.Many2one('my.model')

class MyModel(models.Model):
    _name = 'my.model'

    title = fields.Char('Title')
    my_model_line = fields.One2many('my.model.line', 'my_model_id')
    supply_conditions_status = fields.One2many('supply.conditions', 'model_id')

为了更清楚地理解 - 例如:

我有my.model(field name ='first')和my.model(field name ='second')的表单视图。

在my.model中(name ='first') 在my_model_line名称字段中添加了数据:'item1','item2'

在my.model(name ='second')中 在my_model_line名称字段中添加了数据:'1item','2item'

立即

在my.model中(name ='first') supply_conditions_status name_id字段我看到选择:'1item','2item,item1','item2'

需要:

在my.model中(name ='first') supply_conditions_status name_id 只能从'item1','item2'

中选择的可能性

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以通过简单地为您的many2one字段提供域来实现此目的。 试试这个:

name_id = fields.Many2one(&#39; my.model.line&#39;,string =&#39; Product&#39;,domain = lambda self:[(&#39; my_model_id&#39;,& #39; =&#39;,self.model_id)])