在遍历purchase_order_lines的时候,我如何查询出invoice_lines = fields.One2many('account.move.line', 'purchase_line_id', string="Bill Lines", readonly=True, copy=False)
时间: 2024-03-06 21:50:25 浏览: 98
您可以使用以下代码来查询purchase_order_lines中的invoice_lines:
```
for order_line in purchase_order_lines:
invoice_lines = order_line.invoice_lines
# 您可以在这里使用invoice_lines进行任何操作
```
请注意,因为invoice_lines是一个One2many字段,所以它返回的是一个记录集,而不是单个值。因此,在上面的代码中,我们使用了循环来遍历记录集中的每个记录。
相关问题
模型采购和模型供应商上单通过invoice_lines = fields.One2many('account.move.line', 'purchase_line_id', string="Bill Lines", readonly=True, copy=False)关联,下面这样为啥报错 for purchase_order_line in purchase_order_lines: account_move_taxes =self.env['account.move.line'].search(['purchase_line_id','=',purchase_order_line.id])
在您的代码中,查询语句的语法有误。应该使用以下语法:
```
account_move_taxes = self.env['account.move.line'].search([
('purchase_line_id', '=', purchase_order_line.id)
])
```
在查询语句中,每个条件应该是一个元组,元组的第一个元素是要查询的字段,第二个元素是要查询的值。您的查询语句中,缺少了元组的括号,导致语法错误。
请注意,`self`代表当前对象,如果您在一个方法中编写上述代码,则需要使用`self`。如果您在一个类方法中编写代码,则应该使用`cls`而不是`self`。
mysql查询时做关联表LEFT JSON过滤条件ON中存在 AND d.invoice_code = m.invoice_code,当invoice_code == null,不使用AND d.invoice_code = m.invoice_code如何操作
在MySQL中,如果你想要在LEFT JOIN中处理`invoice_code`可能为NULL的情况,并避免在条件中直接使用`AND d.invoice_code = m.invoice_code`,你可以使用`COALESCE()`函数来替代。`COALESCE()`函数返回第一个非NULL参数,这样即使`d.invoice_code`为空,也可以匹配`m.invoice_code`。
下面是如何修改你的SQL语句的示例:
```sql
SELECT c.client_id, c.name, COALESCE((SELECT SUM(i.invoice_total) FROM invoices i WHERE i.client_id = c.client_id), 0) AS total_sales
FROM clients c
LEFT JOIN invoices d ON COALESCE(d.invoice_code, '') = COALESCE(m.invoice_code, '')
WHERE d.invoice_code IS NOT NULL OR d.invoice_code IS NULL AND m.invoice_code IS NULL;
```
在这个例子中,我们使用`COALESCE(d.invoice_code, '')`将`invoice_code`转换为字符串,这样即使它为NULL,也会与空字符串相比较。`OR d.invoice_code IS NULL AND m.invoice_code IS NULL`这部分则确保了在`invoice_code`一方为空而另一方也为空(即双方都为NULL)的情况下,仍然能够匹配。
阅读全文