gpt4 book ai didi

python - 奥多。返回列表的函数字段

转载 作者:行者123 更新时间:2023-11-28 21:52:25 24 4
gpt4 key购买 nike

我们正在尝试创建呈现为列表的 odoo 函数字段。

我们有以下模型:

class sale_wizard(orm.TransientModel):
_name = 'account.bank.statement.review.wizard'


def _orders(self, cr, uid, ids, fields, arg, context=None):
statement = self.env['account.bank.statement'].browse(self._context.get('active_id'))
partner_id = statement.partner_id.id
sale_orders = self.pool.get('sale.order').search(cr, uid, [
('partner_id', '=', partner_id),
])
print 'hiro'
print sale_orders
return [(1,2,3), (1,2,3)]


_columns = {
'order_ids': fields.function(_orders, string="Sale Orders", type="many2many"),
}

我们有以下观点:

    <?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- Wizard Form -->
<record model="ir.ui.view" id="orders_review_form">
<field name="name">Sale Orders Review</field>
<field name="model">account.bank.statement.review.wizard</field>
<field name="arch" type="xml">
<form string="Sale Orders Test">
<group col="2">
<field name="order_ids" />
</group>
</form>
</field>
</record>
</data>
</openerp>

当我打开包含 View 的表单时 - 它呈现为空列表。和线

print 'hiro'
print sale_orders

不要执行。所以函数字段order_ids不执行函数orders

去哪里挖?

UPD 在其他模块中 - 函数字段按预期工作并在模型初始化时执行。

最佳答案

您的代码中存在一些问题。1.定义功能字段时需要提供关系模型。这里的关系是 sale.order。所以

_columns = { 
'order_ids': fields.function(_orders, string="Sale Orders", type="many2many", relation='sale.order'),
}
  1. 功能字段的方法总是返回一个字典。在您的情况下,由于未指定“multi”属性,该方法应返回一个带有记录 ID 的字典,您已将功能字段添加为键并将结果添加为值。这里的值是销售订单 ID 的列表。例如。

    def _orders(self, cr, uid, ids, fields, arg, context=None):
    res = {}
    for _obj in self.browse(cr, uid, ids, context=context):
    _orders = _order_pool.search(cr, uid, [('partner_id', '=', statement.partner_id.id), ], context=context)
    res[_obj.id] =_orders
    return res

关于python - 奥多。返回列表的函数字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28278120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com