one2many 的域不工作 Odoo

Posted

技术标签:

【中文标题】one2many 的域不工作 Odoo【英文标题】:Domain for one2many not working Odoo 【发布时间】:2022-01-13 03:02:54 【问题描述】:

在我的模块中,我想根据当前日期过滤 one2many 记录。 这是我的xml代码

<field name="record_ids" domain="[('end_date', '&gt;', cur_date)]">
    <tree string="records_tree">
        <field name="record_id"/>
        <field name="record"/>
        <field name="start_date"/>
        <field name="end_date"/>
    </tree>
</field>

cur_date 是我添加的一个函数字段,用于获取当前日期。

我的问题是视图中没有过滤记录。它也没有显示任何错误消息

【问题讨论】:

【参考方案1】:

域包含“字段名”“表达式”“值”。 而不是你给一个字段的值

 <field name="record_ids" domain="[('field', 'expression', value)]">

【讨论】:

谢谢。你能建议一种方法来提供当前日期作为值吗? 我不知道它是否有效...在您的模型中创建一个日期字段,然后在您的域过滤器中将该字段称为“模型 rec.date_field_name”..u 将获得该字段中的日期 @Abdulwahid 他们想要该查询(问题)的解决方案,而不是域的语法,如何在 one2many 字段中应用域。 好吧没问题,但试着理解正确的问题,然后你应该申请你的答案 如果您的答案可能不确定或不正确,那么只需对该问题发表评论即可【参考方案2】:

您只能传递存储在数据库中的域中的那些字段。 所以在这种情况下 cur_date 不存储在数据库中。 然后你还需要传入域,所以你需要从 py 中存储 cur_date 字段。

【讨论】:

【参考方案3】:

首先,one2many 字段不是用于选择目的。我们可以在 one2many 字段中创建新记录或更新现有记录。所以我们不能将域应用于 one2many 字段。 eg: sale.order 中的 sale_order_line 字段

此外,一个2many字段,functional_fields [**if store=True not specified ]不会存储在表中。

Many2one 或 Many2Many 用于选择记录[以及创建新记录],所以在这里我们可以应用域,我们可以限制用户选择某种类型的记录

例如:sale.order.line 中的 Many2one- product_id 字段 many2many - res.users 中的 user_ids 字段

所以,为了得到你的任务,尝试many2many并申请域,然后记录将被过滤

【讨论】:

【参考方案4】:

您在 XML 文件中定义域。 所以这个域是行不通的。

请在 .py 文件中定义。

例如:

'record_ids':fields.one2many('model_name','model_id','Record',domain=[('end_date', '>=', 'cur_date')])

这里的 cur_date 您需要定义一个显示当前日期的函数字段。

所以请检查一下这可能对你有帮助:)。

【讨论】:

【参考方案5】:

在 end_date 字段中写入域,如下所示:

 <field name="record_ids" >
 <tree string="records_tree">
    <field name="record_id"/>
    <field name="record"/>
    <field name="start_date"/>
    <field name="end_date" domain="[('end_date', '&gt;', cur_date)]"/>
</tree>
</field>

我认为它会帮助你..

【讨论】:

【参考方案6】:

我也遇到了这个问题,解决办法是把域放在.py文件里,.xml域不能正常工作。

import_transaction_log_ids = fields.One2many(comodel_name = 'transaction.log','sale_order_id', string = 'Import Transaction Log',domain=[('operation_type','=','import')])

例如operation_type 字段在transaction.log 模型中。

【讨论】:

【参考方案7】:

在python中添加: 例如:

xn_cutting_ids = fields.One2many('mrp.bom.line', 'bom_id', 'Cutting Lines', domain=lambda self:[('xn_stage','=','cut')])

使用domain = lambda 否则在域中使用字符串值时可能会出错。

这里xn_stagemrp.bom.line 模型中。

【讨论】:

以上是关于one2many 的域不工作 Odoo的主要内容,如果未能解决你的问题,请参考以下文章

Facebook Auth:无法加载 URL:此 URL 的域不包含在应用程序的域中

在 textview 上链接,文本中的域不起作用,链接不可点击

使用 PHP SDK 登录 Facebook 应用程序不起作用:此 URL 的域不包含在应用程序的域中 [重复]

从namesheap解析XML,表示我的域不可用

域内,如何限制一台电脑只能指定的域用户登录

如何修复 mandrill / mailchimp 事务性电子邮件问题收件人域不匹配