[英]how i can show multiple field's data in a Many2one field in Odoo 14?
[英]How to update another model. Many2one field. Odoo-14
我将 account.reconciliation.act 模型中的数据创建到 direct.statistics 模型中然后我想更改 account.reconciliation.act 中的一些数据。 并且它在 direct.statistics 模型中没有变化。 我已经编写了一个 write 方法,我想用它来更新 direct.statistic 模型中的数据。 但它不起作用。 我做错了什么?
我收到错误 TypeError: write() 需要 2 个位置参数,但给定了 3 个1.py
class AccountReconciliationAct(models.Model):
_name = "account.reconciliation.act"
direct_statistics_id = fields.Many2one(comodel_name="direct.statistics", string="Direct Statistics")
@api.model
def create(self, values):
....
else:
self.env["direct.statistics"].create({
"direct_advertiser_id": record_id.partner_id.id,
"direct_payment_net_id": record_id.payment_net_id.id,
"direct_currency_id": record_id.currency_id.id,
"direct_last_act_date": record_id.reconciliation_act_date,
"direct_total_amount": record_id.amount_total,
"direct_department_ids": record_id.reconciliation_act_line_ids.department_id
})
return record_id
@api.model
def write(self, values):
res = super().write(values)
self.env["direct.statistics"].update({
"direct_advertiser_id": self.partner_id.id,
"direct_payment_net_id": self.payment_net_id.id,
"direct_currency_id": values.get('currency_id.id'),
"direct_last_act_date": values.get('reconciliation_act_date'),
"direct_total_amount": values.get('amount_total'),
"direct_department_ids": values.get('reconciliation_act_line_ids.department_id'),
})
return res
2.py
class DirectStatistics(models.Model):
_name = "direct.statistics"
_description = "Direct statistics"
_rec_name = "direct_advertiser_id"
direct_advertiser_id = fields.Many2one(comodel_name="res.partner", string="Advertiser")
direct_manager_id = fields.Many2one(related="direct_advertiser_id.manager_id", string="Manager")
direct_payment_net_id = fields.Many2one(related="direct_advertiser_id.payment_net_id", string="Net")
direct_currency_id = fields.Many2one(comodel_name="res.currency", string="Currency")
direct_conversion_ids = fields.Many2many(comodel_name="affise.conversion", string="Conversions")
direct_last_act_date = fields.Date(string="Last Act Date", compute="_compute_direct_last_act_date", store=True)
direct_first_conversion_date = fields.Date(
string="First Conversion Date", compute="_compute_direct_first_conversion_date", store=True
)
direct_department_ids = fields.Many2many(
comodel_name="affise.department", compute="_compute_direct_department_ids", string="Department"
)
direct_reconciliation_act_ids = fields.Many2many(
comodel_name="account.reconciliation.act", string="Created Acts", domain=[("state", "!=", "cancel")]
)
direct_total_amount = fields.Monetary(
currency_field="direct_currency_id", string="Total Acts")
class AccountReconciliationAct(models.Model):
_name = "account.reconciliation.act"
direct_statistics_id = fields.Many2one(comodel_name="direct.statistics", string="Direct Statistics")
@api.model
def create(self, values):
record_id = super(AccountReconciliationAct, self).create(values)
....
else:
record_id.direct_statistics_id = self.env["direct.statistics"].create({
"direct_advertiser_id": record_id.partner_id.id,
"direct_payment_net_id": record_id.payment_net_id.id,
"direct_currency_id": record_id.currency_id.id,
"direct_last_act_date": record_id.reconciliation_act_date,
"direct_total_amount": record_id.amount_total,
"direct_department_ids": record_id.reconciliation_act_line_ids.department_id
})
return record_id
def write(self, values):
res = super(AccountReconciliationAct, self).write(values)
self.direct_statistics_id.update({
"direct_advertiser_id": self.partner_id.id,
"direct_payment_net_id": self.payment_net_id.id,
"direct_currency_id": values.get('currency_id.id'),
"direct_last_act_date": values.get('reconciliation_act_date'),
"direct_total_amount": values.get('amount_total'),
"direct_department_ids": values.get('reconciliation_act_line_ids.department_id'),
})
return res
您需要做的第一件事是将创建的对象写入direct_statistics_id
字段。 这样做是为了您可以更新write
方法中的值。 也不需要为写入方法调用@api.model
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.