odoo 14, 如何使我的模型可序列化?

问题描述

我正在使用 odoo 14。我创建了一个自定义插件。在我的插件中,下面有一个模型

class Merchant(models.Model):
_name = "ecommece_advance.merchant"

name        = fields.Char( required=True)
email       = fields.Char(required=True)
address     = fields.Char()
website     = fields.Char()
latitude    = fields.Float(digits=(3,6))
longitude   = fields.Float(digits=(3,6))
contact     = fields.Char(required=True)
alternative_contact = fields.Char()
market_id  = fields.Many2one('ecommece_advance.market',ondelete='cascade',string="Market",required=True)

我创建了一个供外部使用的 Web 控制器并返回一个商家数据列表。 odoo 说我的模型不可序列化以从控制器返回。我找不到序列化我的模型的方法。请帮帮我。提前致谢。

不接受以下示例解决方案--- *通过创建JSON从模型返回数据 *获取数据并在控制器中创建JSON

解决方法

我找到了解决方案,但不合适。

在插件的每个模型中添加一个定义

    def getJson(self):
    data = {}

    for field in self._model_fields :
        if str(self[field]).startswith('ecommece_advance') :
            data[field] = self[field].getJson()
        elif isinstance(self[field],models.Model) :
            break
        elif isinstance(self[field],fields.datetime):
            data[field] = str(self[field])
        else:
            data[field] = self[field]
    return data

现在从控制器中,您可以调用 searchModel.getJson() 来获取可序列化的数据。上述方法是插件中的通用方法,一行修改也适用于其他插件。

我知道这不是解决问题的正确方法。如果你们有更好的解决方案,请评论。