(可能)autovacumn 的数据丢失

data loss with (possibly) autovacumn

我已经在 Odoo 11 中自定义了 crm 模块。

我添加了一些产品线来计算计划收入,而无需创建报价单。

我遇到的问题是一段时间后 - 大约 1 天。数据从 Odoo 的字段中清除。

我使用 store=True 正确设置了字段(我认为!!)

另一个嫌疑人是autovacumn postgresql 数据库清除数据的预定操作。

我如何确保数据保留,并且如果数据可用 vacumming,请阻止它被垃圾收集?

crm_lead.py

x_order_line = fields.One2many(
    "crm.lead.calc.revenue.line",
    "x_order_id",
    string="Product Lines",
    copy=False,
    auto_join=True,
    store=True,
)

x_product_id = fields.Many2one(
    "product.product",
    related="x_order_line.x_product_id",
    string="Product",
    copy=True,
)

calc_revenue_line.py

class CalcRevenue(models.TransientModel):
    """
    This wizard will Calculate the Planned Revenue of the current record in CRM.lead
    """

    _name = "crm.lead.calc.revenue.line"
    _description = "Line Model for Calculating products"

    x_product_id = fields.Many2one(
        "product.product",
        string="Product",
        domain=[("categ_id", "in", ["Accessories", "Final products", "Subscriptions"])],
        change_default=True,
        ondelete="restrict",
        required=True,
        store=True,
    )

    x_product_uom_qty = fields.Float(
        string="Quantity",
        digits=dp.get_precision("Product Unit of Measure"),
        required=True,
        default=1.0,
        store=True,
    )

    x_order_id = fields.Many2one(
        "crm.lead",
        string="Product Lines",
        required=True,
        ondelete="cascade",
        index=True,
        copy=False,
        store=True,
    )

    x_price_unit = fields.Float(
        "Unit Price", digits=dp.get_precision("Product Price"), default=1.0, store=True
    )

我通过更改

解决了这个问题

class CalcRevenue(models.TransientModel):

至:

class CalcRevenue(models.Model):

我认为 TransientModel 是数据未保存的原因。