def open_receipt_details(self): self.ensure_one() return { 'name': '收款记录详情', 'type': 'ir.actions.act_window', 'res_model': 'roke.dispatch.order.management', 'view_mode': 'form', 'view_type': 'form', 'views': [(self.env('roke_mes_transport.roke_dispatch_order_management_from').id)], 'target': 'new', 'res_id': self.id, }这个代码那个有问题
时间: 2024-04-25 19:26:55 浏览: 7
在这段代码中,`self.env('roke_mes_transport.roke_dispatch_order_management_from').id` 中的 `.id` 可能会导致错误。正确的语法应该是 `self.env['roke_mes_transport.roke_dispatch_order_management_from'].id`。也就是说,应该使用方括号而不是圆括号来访问环境变量。
相关问题
def payment_state(self): for record in self: record.state = 'payment' if record.state == 'payment': database_dict = { "code": record.code, 'name': self._description } self.env['roke.receipt.details'].create(database_dict) 这个怎么修改可用同时添加多条数据
你可以尝试将代码改为以下形式:
```
def payment_state(self):
details = []
for record in self:
record.state = 'payment'
if record.state == 'payment':
database_dict = {
"code": record.code,
'name': self._description
}
details.append(database_dict)
self.env['roke.receipt.details'].create(details)
```
这里我们先创建一个空列表`details`,然后遍历每个记录,将状态设置为 "payment",并将相应的字典添加到 `details` 列表中。最后,我们一次性创建所有的记录,而不是每次循环都创建一条记录。这样可以提高效率,同时可以添加多条数据。
IFNULL( sum(_receipt_all.amount), 0 ) amount
这是一个SQL语句中的表达式,大致的意思是:如果_receipt_all表中的amount列的和不为NULL,则返回amount列的和,否则返回0。
具体解释如下:
- IFNULL(expr1, expr2) 函数:如果expr1不为NULL,则返回expr1的值,否则返回expr2的值。
- SUM(expr) 函数:是MySQL中的一个聚合函数,用于计算指定列的总和。
- _receipt_all.amount:表示_receipt_all表中的amount列。
- 0:表示当_receipt_all表中的amount列的和为NULL时,返回的默认值。
因此,IFNULL(sum(_receipt_all.amount), 0)的含义是,如果_receipt_all表中amount列的和不为NULL,则返回amount列的和,否则返回0。最后加上"amount",表示将结果命名为"amount"。