首页 > 解决方案 > 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

标签: pythonserializationodooodoo-14

解决方案


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

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

    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() 来获取可序列化的数据。上述方法是插件中的通用方法,一行修改也可以用于其他插件。

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


推荐阅读