Python 在不同型号的树视图中显示one2many字段[Odoo]
我希望[在模型帐户的树状视图中]显示应用于特定发票的所有税费及其金额 这是输出: 列Tax line显示表account.invoice.Tax中存在的税的ID(而我想显示它们的名称和相应的金额) 模型account.invoice有一个名为tax_line_id[tax line]的字段,其中包含发票上所有税费的记录,该记录存储在单独的表account.invoice.tax中,在其自身的树视图中如下所示: 我想提取税名及其对应的金额,以反映在account.invoice的树状视图中 下面是我的python代码,它似乎不起作用:Python 在不同型号的树视图中显示one2many字段[Odoo],python,odoo,odoo-10,Python,Odoo,Odoo 10,我希望[在模型帐户的树状视图中]显示应用于特定发票的所有税费及其金额 这是输出: 列Tax line显示表account.invoice.Tax中存在的税的ID(而我想显示它们的名称和相应的金额) 模型account.invoice有一个名为tax_line_id[tax line]的字段,其中包含发票上所有税费的记录,该记录存储在单独的表account.invoice.tax中,在其自身的树视图中如下所示: 我想提取税名及其对应的金额,以反映在account.invoice的树状视图中 下
@api.one
def taxz(self):
tax_pool = self.pool.get("account.tax")
found_taxes = tax_pool.read(cr, uid, [tax_id,], ["tax_line_ids"], context)
found_tax = found_taxes[0] if found_taxes else None
tax_line_ids = found_tax["tax_line_ids"]
_logger.critical("context type: " + type(context))
_logger.critical("context content: " + str(context))
_logger.critical(tax_line_ids)
视图的xml代码:
<field name="tax_line_ids" widget="many2many_tags" />
试试这个:
类别发票(models.Model):
_继承='account.invoice'
tax\u line\u id=字段.Many2many('account.invoice.tax',
“发票税”,
“发票编号”,
“税务id”,
"税单",,
compute='get\u tax\u list',store=True)
@api.dependens('tax\u line'、'tax\u line.amount')
def get_tax_列表(自身):
对于rec in self:
如果记录征税行:
rec.tax_line_id=[(6,0,rec.tax_line.id)]
其他:
记录税务行ID=[(5,0,0)]
但是这样做只会在树视图中显示没有金额的税单
如果要显示需要覆盖account.invoice.tax中的name\u get
方法的金额
但这将影响所有的x2多个
字段
acontinvoicetax类(models.Model):
_继承='account.invoice.tax'
@api.multi
def名称_获取(自身):
res=[]
对于rec in self:
res.append((rec.id,rec.name+':'+str(rec.amount)))
返回res
如果不希望这样,则需要将类型更改为Char
,然后重新计算该字段
或者创建另一个模型
以节省税款,并为该模型定义name\u get
正如你所看到的,如果你仍然得到keyErro,你一定是做错了什么,检查你的代码的缩进继承值…:
您可以添加一个char字段,以便在树视图的显示中使用它:
class Invoice(models.Model):
_inherit = 'account.invoice'
tax_line_tree_view = fields.Char(compute='get_tax_list')
@api.multi
def get_tax_list(self):
tax_disp = ""
for rec in self:
if rec.taxe_line:
for tax in taxe_line:
tax_disp = tax_disp + "["+tax.name+"], "
rec.tax_line_tree_view = tax_disp[:-2] # [:-2] just to remove the last ', ' characters.
else:
rec.tax_line_tree_view = tax_disp
在树视图所在的XML文件中,添加以下字段:
<field name="tax_line_tree_view " />
而不是税号
我希望这能回答你的问题。刚刚尝试了第一部分,但它不起作用[显示一个空列表]我将@api.dependens更改为tax\u line\u id,因为它显示了关键错误。问题是它应该工作,请尝试在方法的开头打印,看看它是否被调用。抱歉,这是我的错误,名称是tax\u line not tax\u line我已经更改了,但它仍然不工作。加上控件没有进入函数,我放了一个_记录器,它没有打印任何东西。你把方法放在哪里了?该方法属于account.invoice和account.invoice有那个字段