【问题标题】:Odoo domain filter many2oneOdoo 域过滤器 many2one
【发布时间】:2017-08-08 08:34:34
【问题描述】:

我有 3 个对象:

class PurchaseRequest(models.Model):
    _name = 'purchase.request'

    purchase_request_line = fields.One2many('purchase.request.line', 'purchase_request_id', copy=True)
    supply_conditions_status = fields.One2many('supply.conditions', 'purchase_id', string='Order',copy=True)

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

    name = fields.Many2one('purchase.request.line', string='Product')

class PurchaseRequestLine(models.Model):
    _name = 'purchase.request.line

    purchase_request_id = fields.Many2one('purchase.request', 'Purchase request')

使用域我只想过滤这些名称字段(many2one 字段)值,这些值写入并保存在 purchase.request 表单 purchase_request_line 字段中。因为现在我可以看到保存在数据库中的所有值...

<openerp>
    <data>
        <record model="ir.ui.view" id="view_purchase_request_doc">
            <field name="name">purchase.request.doc</field>
            <field name="model">purchase.request</field>
            <field name="arch" type="xml">
                <form string="Purchase Request">
                    <field name="state" widget="statusbar" statusbar_visible="draft,to_approve_first,approved,rejected,canceled" statusbar_colors="{&quot;approved&quot;:&quot;green&quot;}"/>
                </header>
                <sheet>

                            <field name="purchase_request_line" attrs="{'readonly': [('state','not in', ('draft'))]}">
                                <tree string="Purchase Order Lines" editable="bottom">
                                    <field name="name"/>
                                    <field name="quantity"/>
                                </tree>
                             </field>
                   <notebook>
                        <page string="Conditions" attrs="{'invisible': [('state','in', ('draft', 'to_approve_first'))]}">
                            <field name="supply_conditions_status">
                                <tree string="Purchase Order Lines">
                                    <field name="name" domain="[('???', '???', '???')]"/>

                                <field name="name" options="{'no_create': True}" domain="[('name', '=', 'product_id')]"/>

我会在这里尝试可视化:

我想在购买条件产品名称 many2one 字段中进行过滤,我只能过滤并看到 2 个项目:item1 和 item2。

【问题讨论】:

  • 我不明白你的问题。请详细说明......
  • 我更新了我的问题,请检查一下

标签: python-2.7 openerp odoo-9


【解决方案1】:

我有点明白。 您可以发布所有 3 个模型的代码吗? 或者再解释一下。

但我对你有个小概念。

所以...你需要在 *.py 端创建函数。

例如

class PurchaseRequestLine(models.Model):
    _name = 'purchase.request.line

    purchase_request_id = fields.Many2one('purchase.request', 'Purchase request', domain=_getfilter)

    @api.model
    def _getfilter(self):
        return [('purchase_request_id', '=', self.env['purchase.request'].search([('name','=',???)]).name)]

或者我理解你的另一个。如果您需要在 Many2one 字段中键入时返回所需的结果。

例如。

@api.model
def name_search(self, name, args=None, operator='ilike', limit=100):
    args = args or []
    recs = self.browse()
    if name:
        recs = self.search(['|', ('purchase_request_id', 'ilike', name), ('name', 'ilike', name), ] + args, limit=limit)
    if not recs:
        recs = self.search(['|', ('purchase_request_id', operator, name), ('name', operator, name), ] + args, limit=limit)
    return recs.name_get()

【讨论】:

  • 我更新了我的问题,请看一下。但正如我所见,你理解正确。我喜欢 1 示例,但我不认为这是可能的......我需要在 supply.conditions 名称字段(表单视图中的产品)我只能选择 item1、item2(如图所示)
  • 在名称字段上,我只需要获取在活动 purchase.request 模型中写入的这些 purchase.request.line 值。以您的方式,我找不到有效的 purchase.request 模型 ID
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多