限制模型的记录[Odoo]

时间:2015-06-01 10:24:25

标签: python openerp record odoo odoo-8

我需要在我的观点中列出合作伙伴,因此我使用了模型'res.partner'。

     <record id="view_res_partner_tree" model="ir.ui.view">
          <field name="name">res.partner.tree</field>
          <field name="model">res.partner</field>
          <field name="arch" type="xml">
              <tree string="Contacts" edit="false" create="false" delete="false">
                  <field name="display_name"/>
                  <button name="generate" type="object" string="Générer" icon="oe_highlight"/>
              </tree>
          </field>
      </record>

这很有效,但列出了每个合作伙伴。我想只列出获得服务的合作伙伴。 (自定义模块服务)

我会在XML中完成这样的事情:

domain="[('display_name', 'in', 'select display_name from module_services')]"

你知道怎么做吗?

编辑: 我把它添加到我的模型('res.partner')

got_services = fields.Boolean('Got services', compute='_compute_services')

 @api.multi
 def _compute_services(self):
     for record in self:
         self.env.cr.execute("SELECT * FROM module_service WHERE id = %d;" % record.id)
         res = self.env.cr.fetchall()
         record.got_services = False if not res else True

修改了我的观点:

     [...]
     <field name="display_name" domain="[('got_services', '=', True)]"/>
     <field name="got_services"/>
     [...]

只有当客户获得服务(好)时才将got_services设置为True,但即使我的域名仍然列出了所有客户。

1 个答案:

答案 0 :(得分:0)

我认为您需要根据您的要求在 res.partner 模型中定义新字段。

您可以在custom_services模型中创建与 res_partner_id 字段对应的 one2many (我猜这是一个很多的字段),所以你可以轻松完成您的域名过滤。