Odoo 域无法从域中过滤单元和小时
Odoo domain can't filter Unit(s) and Hour(s) from domain
我有 many2one 字段并尝试按名称过滤度量单位:
product_uom = fields.Many2one('product.uom', 'Unit of Measure', required=True, domain="[('name', 'in', ['m', 'Hour(s)', 'mile(s)', 'Day(s)', 'unit(s)'])]")
xml 字段:
<field name="product_uom"/>
问题是在 product_uom 下拉列表中我找不到单位和小时。这些字段名称可能有什么问题?
P.S。例如,如果我在我的 PgAdmin select * from product_uom where name in ('Unit(s)', 'Hour(s)')
中制作简单的 sql 一切都很好。
已解决:
将我的代码更改为:
@api.multi
def get_domain(self):
lang = self.env.context.get('lang')
domain_list = ['m', 'Hour(s)', 'mile(s)', 'Day(s)', 'Unit(s)']
if lang and lang != 'en_US':
result = self.env['ir.translation'].search_read([
('lang', '=', lang),
('src', 'in', domain_list)])
domain_list = [rec['value'] for rec in result]
return [('name', 'in', domain_list)]
也许你可以通过用户搜索阅读来提取
单位的翻译值:
product_uom = fields.Many2one('product.uom', 'Unit of Measure', required=True,
domain=lambda self: self.get_domain())
@api.multi
def get_demain(self):
"""get default domain for uom taking languange in considiration"""
lang = self.env.context.get('lang')
domain_list = ['m', 'Hour(s)', 'mile(s)', 'Day(s)', 'unit(s)'])]
if lang and lang != 'en':
# language is not english
result = self.env['ir.translation'].search_read([
('lang', '=', lang),
('src', 'in', domain_list),
('name', '=', 'product.uom')],
['value'])
domain_list = [rec['value'] for rec in result]
return [('name', 'in', domain_list)]
我没有尝试代码,但我认为你可以做得比这更好希望这对你有帮助。如果这个词没有用户语言的翻译....等等
我有 many2one 字段并尝试按名称过滤度量单位:
product_uom = fields.Many2one('product.uom', 'Unit of Measure', required=True, domain="[('name', 'in', ['m', 'Hour(s)', 'mile(s)', 'Day(s)', 'unit(s)'])]")
xml 字段:
<field name="product_uom"/>
问题是在 product_uom 下拉列表中我找不到单位和小时。这些字段名称可能有什么问题?
P.S。例如,如果我在我的 PgAdmin select * from product_uom where name in ('Unit(s)', 'Hour(s)')
中制作简单的 sql 一切都很好。
已解决:
将我的代码更改为:
@api.multi
def get_domain(self):
lang = self.env.context.get('lang')
domain_list = ['m', 'Hour(s)', 'mile(s)', 'Day(s)', 'Unit(s)']
if lang and lang != 'en_US':
result = self.env['ir.translation'].search_read([
('lang', '=', lang),
('src', 'in', domain_list)])
domain_list = [rec['value'] for rec in result]
return [('name', 'in', domain_list)]
也许你可以通过用户搜索阅读来提取 单位的翻译值:
product_uom = fields.Many2one('product.uom', 'Unit of Measure', required=True,
domain=lambda self: self.get_domain())
@api.multi
def get_demain(self):
"""get default domain for uom taking languange in considiration"""
lang = self.env.context.get('lang')
domain_list = ['m', 'Hour(s)', 'mile(s)', 'Day(s)', 'unit(s)'])]
if lang and lang != 'en':
# language is not english
result = self.env['ir.translation'].search_read([
('lang', '=', lang),
('src', 'in', domain_list),
('name', '=', 'product.uom')],
['value'])
domain_list = [rec['value'] for rec in result]
return [('name', 'in', domain_list)]
我没有尝试代码,但我认为你可以做得比这更好希望这对你有帮助。如果这个词没有用户语言的翻译....等等