我已经使用qweb创建了一个报告,当我需要显示来自不同模型的其他数据时,它说错误“ account.invoice对象没有属性'pack_operation_product_ids'”。我的主要问题是如何从相同的模块但不同的对象或模型调用pack_operation_product_ids。谢谢
PP.xml
<tr t-foreach="o.pack_operation_product_ids" t-as="m">
<tr t-foreach="o.picking_ids" t-as="l">
<td> <span t-field="l.name"/> | <span t-field="m.name"/> </td>
models.py
from odoo import fields,models,api
@api.multi
def get_data(self):
record_collection = []
# Do your browse, search, calculations, .. here and then return the data (which you can then use in the QWeb)
record_collection = self.env['stock.picking'].search([('pack_operation_product_ids', '=', 'o.pack_operation_product_ids')])
return record_collection
返回错误
AttributeError: 'account.invoice' object has no attribute 'pack_operation_product_ids'
Error to render compiling AST
AttributeError: 'account.invoice' object has no attribute 'pack_operation_product_ids'
Template: invoice_report2.qweb_inv_pp_document
Path: /templates/t/t/t/div/div[3]/div[2]/table/tbody/tr
Node: <tr t-foreach="o.pack_operation_product_ids" t-as="m">
<!-- <tr t-foreach="request.env['stock.picking'].search([(
'pack_operation_product_ids', '=', o.pack_operation_product_ids.name)])" t-as="obj"> -->
<!--<tr t-set="record_collection" t-value="doc.get_data()">-->
<tr t-foreach="o.picking_ids" t-as="l">
<td> <span t-field="l.name"/> | <span t-field="m.name"/> </td>
</tr>
</tr>
答案 0 :(得分:0)
当您编写此代码<tr t-foreach="o.pack_operation_product_ids" t-as="m">
时,实际上是在访问对象pack_operation_product_ids
的{{1}}字段,该对象当前是o
的记录集可能是根据您的问题。因此,要访问特定字段,您必须在模型account.invoice
上定义该字段,您可以继承现有字段并添加该字段和相关功能,但您甚至没有继承任何模型或创建,只是创建了一个错误的函数。
account.invoice
您的代码不必完全像这样,但是根据您不知道的要求,类似这样的代码。
也在您的python代码中,您正在使用术语from odoo import fields,models,api
class AccountInvoice(models.Model):
_inherit = 'account.invoice'
pack_operation_product_ids = field.One2many(compute='get_data')
@api.multi
def get_data(self):
...
...
进行搜索,但是右叶子是一个字符串,左叶子是一个不存在的字段。我不知道您怎么认为这会起作用。