如何从 odoo 8 中的 orm 中获取数据库值和从字符串中获取字段名称
how to get database value from orm and field name get from string in odoo 8
我从配置中获取字段名称字符串。
para = 'partner_id.name'
account.invoice(281088,).para
*** AttributeError: 'account.invoice' object has no attribute 'para'
系统无法知道数据库字段名称exactly.It来自用户配置。
在您的情况下,您可以拆分提供的参数并像这样使用 getattr
para = 'partner_id.name'
attributes = para.split('.')
value = account.invoice(281088)
for attribute in attributes:
if hasattr(value, attribute):
value = getattr(value, attribute)
else:
return False
return value
attributes = para.split('.')
这会拆分用户提供的参数。在这种情况下,属性值将变为 ['partner_id', 'name']
value = account.invoice(281088)
将 account.invoice 分配给值
for attribute in attributes:
if hasattr(value, attribute):
value = getattr(value, attribute)
else:
return False
遍历我们的属性并检查值是否具有该属性。如果是,则获取它的值,否则 return 否则。
return value
Return 在这种情况下将是合作伙伴名称的最终值
我从配置中获取字段名称字符串。
para = 'partner_id.name'
account.invoice(281088,).para
*** AttributeError: 'account.invoice' object has no attribute 'para'
系统无法知道数据库字段名称exactly.It来自用户配置。
在您的情况下,您可以拆分提供的参数并像这样使用 getattr
para = 'partner_id.name'
attributes = para.split('.')
value = account.invoice(281088)
for attribute in attributes:
if hasattr(value, attribute):
value = getattr(value, attribute)
else:
return False
return value
attributes = para.split('.')
这会拆分用户提供的参数。在这种情况下,属性值将变为 ['partner_id', 'name']
value = account.invoice(281088)
将 account.invoice 分配给值
for attribute in attributes:
if hasattr(value, attribute):
value = getattr(value, attribute)
else:
return False
遍历我们的属性并检查值是否具有该属性。如果是,则获取它的值,否则 return 否则。
return value
Return 在这种情况下将是合作伙伴名称的最终值