计算字段作为 Odoo 10 中的列表

Computed field as a list in Odoo 10

我有一个代码可以在 Internet 上获取一些信息并将其 returns 作为 Python 列表。我想在 Odoo 树视图中显示(不保存在数据库中)。

为此,我创建了一个计算字段如下:

created_time = fields.Char(compute='_compute_created_time')

@api.multi
def _compute_created_time(self):
    my_data = self.my_internet_data()
    created_time_list = []

    for created_times in my_data:
        created_time_list.append(created_times['created_time'])

    self.created_time = created_time_list

呈现树视图时,它会显示一行,其中包含所有数据。这不是我想要的方式。

我想在自己的行中显示列表中的每个数据。我相信要做到这一点,我不能使用 fields.Char() 作为字段类型。那么,我可以使用什么字段类型或任何其他解决方案?

要在树中显示它,您必须将数据插入 table 我的意思是你需要逐行插入数据为此使用 TransienModel 因为 odoo 会在一段时间后删除记录。

树视图将始终在您的 table(模型)上执行选择以获取数据 如果您将所有结果插入一个字段,这意味着您插入了 一条记录中的记录。

所以试试这个逻辑可能对你有帮助:

获取您的数据。

使用 odoo create 方法插入数据或使用游标 (self.env.cr) 插入数据以提高性能,因为 create 方法会做很多不需要的工作。

然后打开带有特殊域的树视图以仅显示插入的记录。

@api.multi
def show_result(self):
   #1- fetch data
   #2- insert data.
   #3- return window action
   return {
       'type': 'ir.actions.act_window',
       'name': '...'
       'res_model': 'your.transienModel.name',
       ..
       ..
       ..
       # special filter here to show only the inserted recrods
       # like date or search parameters.
       'domain': []
   }