python - 如何在 many2one 字段中返回列表对象
问题描述
我已经声明了一个 many2one 字段
packaging_id = fields.Many2one(
'product.packaging', 'Package type', compute='_compute_package_type',
index=True)
所以我需要制定一个逻辑来返回我想在列表中显示的对象。我已经使用计算选项进行了尝试,但我不确定这是否正确。关注我的计算领域
@api.multi
def _compute_package_type(self):
pckdel = self.batch_id.package_delivery_group
order = self.env['ord.data'].search([("pckdelgrp", "=", pckdel)], limit=1)
type = self.env['delivery.carrier'].search([("name", "=", order.deliverymethod)], limit=1)
if type.delivery_type == 'test' or type.delivery_type == 'xxx':
package_objs = self.env['product.packaging'].sudo().search([])
else:
package_objs = self.env['product.packaging'].search([("packager_carrier_type", "=", type.delivery_type)])
self.packaging_id = package_objs.ids
但是它失败了,并且没有出现带有 package_objs 的下拉列表。有人可以帮我吗?
非常感谢你
解决方案
在这种类型的场景中,您应该domain
使用compute
def compute_package_type(self):
pckdel = self.batch_id.package_delivery_group
order = self.env['ord.data'].search([("pckdelgrp", "=", pckdel)], limit=1)
type = self.env['delivery.carrier'].search([("name", "=", order.deliverymethod)], limit=1)
if type.delivery_type == 'test' or type.delivery_type == 'xxx':
package_objs = self.env['product.packaging'].sudo().search([])
else:
package_objs = self.env['product.packaging'].search([("packager_carrier_type", "=", type.delivery_type)])
return [('id','in',package_objs.ids)]
packaging_id = fields.Many2one(
'product.packaging', 'Package type', domain=compute_package_type)
推荐阅读
- javascript - 如何根据数组 React 中的值从 List 更新 Cell 的状态?
- javascript - 如何将 toast 消息添加到提交按钮
- snmp - snmptranslate 可以返回 MIB 中定义的整数的文本值吗?
- c++ - 什么时候让类的方法返回自己是不好的?
- security - OAuth2 - 受信任的客户端能否通过客户端凭据流访问用户资源
- html - 为什么位置绝对按钮在较小的显示器上与我的内容重叠?
- django - swagger 中 POST 和 PUT 方法的有效负载
- r - 如何编织 coeftest() 回归输出?
- mongodb - mongorestore 未捕获的异常:语法错误
- css - 如何正确引用 CSS?