【问题标题】:how to convert string into object in python odoo如何在python odoo中将字符串转换为对象
【发布时间】:2021-10-05 18:26:28
【问题描述】:

我有两种方法 在方法1中:

def print_xls(self):
    record = self.env['sale.order'].search([('id','in',filtered_list)])
    data = {
        
        'model_recs':record
    }
    return self.env.ref('module_name.report_name').report_action(self, data=data)

在方法2中:

def generate_xlsx_report(self, workbook, data, lines):
    h1 = workbook.add_format({'font_size': 16, 'align': 'center', 'align':'center','valign':'vcenter', 'bold': True,'underline':True})
    sheet = workbook.add_worksheet('sale dept')
    sheet.merge_range(1, 0, 3, 17,"Sale Report",h1)
    print(data['model_recs'])

我正在获取数据['model_recs'] = 'sale.order(1,2,3)'

我的问题是如何将字符串模型 'sale.order(1,2,3)' 转换为模型/对象 sale.order(1,2,3),这样我就可以获得它的字段数据,如销售。第二种方法中的 order[0].some_field。

【问题讨论】:

  • 这里缺少一些东西。你在第一部分填写data,但不要在第二部分使用它。可以补充一下吗?
  • @CZoellner 已编辑。
  • 那应该是普通的记录集(对象),但字符串表示就像你说的那样。你有没有尝试循环它们?
  • @CZoellner 无法遍历字符串 'sale.order(1,2,3)'。这就是为什么我想将该字符串转换为记录集/模型。
  • 好吧,这很奇怪。

标签: python odoo odoo-12 odoo-13 odoo-14


【解决方案1】:

你可以使用 eval("sale.order(1,2,3)")

>>> eval("str(1)")
'1'
>>> eval("type(str(1))")
<class 'str'>

>>> class x:
...     def gg(self, x, y, z):
...             print(x, y, z)
... 
>>> eval('x().gg(1,2,3)')
1 2 3

从这里https://stackoverflow.com/a/42227653/7035448

虽然它是一种非常强大的方法,但也值得注意 eval eval_problems 的问题

【讨论】:

    猜你喜欢
    • 2013-10-24
    • 1970-01-01
    • 2023-01-13
    • 2013-07-26
    • 2019-12-26
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    • 2023-04-01
    相关资源
    最近更新 更多