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', '>', 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', '>', 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_stage
在mrp.bom.line
模型中。
【讨论】:
以上是关于one2many 的域不工作 Odoo的主要内容,如果未能解决你的问题,请参考以下文章
Facebook Auth:无法加载 URL:此 URL 的域不包含在应用程序的域中
在 textview 上链接,文本中的域不起作用,链接不可点击