我有很多字段,并尝试按名称过滤度量单位:
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下拉列表中我找不到Unit(s)和Hour(s)。这些字段名称有什么问题?
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)]
答案 0 :(得分:2)
可能是你可以用户搜索读取来提取 翻译单位价值:
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)]
我没有尝试过代码,但我认为你可以做得更好,希望这对你有所帮助。如果用户语言中没有这个词的翻译,可能会等等。