如何解决odoo 14: ValueError: 以 10 为基数的 int() 的无效文字:'categry_id.base_category'
当单击视图 (xml) 中的 Many2one brand_id 字段时,它抛出错误。 ValueError:int() 的文字无效,基数为 10:'categry_id.base_category'
在@SDBot的帮助下,在product.category中添加了一个计算字段base_category,类型为Integer这里。 首先在 brand_id 的域中我没有使用 int() 但是当搜索上面的错误时,我尝试使用 int('categry_id.base_category') 但仍然得到同样的错误。
下面是 2 个模型,首先我创建了 base_category 值 - 感谢 @SDBot-,(它是从 Char 类型字段创建的,并将值存储在 Integer 类型字段中,即使在通过 psql 手动更新值之后,错误是一样的) 第二个是我在域过滤器中遇到错误的地方。
请帮忙解决问题。
class ProductCateg(models.Model):
_inherit = 'product.category'
level = fields.Integer(string='Level',compute='_compute_level',store=True)
base_category = fields.Integer('Base Cat',compute='_compute_basecat',store=True)
@api.depends('parent_id')
def _compute_level(self):
for record in self:
record.level = (record.parent_id.level or 0) + 1
@api.depends('parent_id')
def _compute_basecat(self):
for rec in self:
split_str = (rec.parent_path or '').split('/')
rec.base_category = int(split_str[1]) if len(split_str) > 1 else ''
class OrderItems(models.Model):
_name = 'tests.orderitems'
_description = "Tests Order Items"
store_id = fields.Many2one('tests.stores',string="Store",ondelete='cascade')
order_id = fields.Many2one('tests.testsorders')
categry_id = fields.Many2one('product.category',string="Category",domain="[['complete_name','not like','%Brands%']]")
items_id = fields.Many2one('tests.storeitems',string="Item",domain="[['categs_id','=',categry_id]]")
brand_id = fields.Many2one('product.category',string="Brand",domain=[('base_category',int('categry_id.base_category')),('complete_name','like','%Brands%')])
解决方法
您需要先在 tests.orderitems 中显示值:
categry_id = fields.Many2one('product.category',string="Category",domain="[['complete_name','not like','%Brands%']]")
base_category = fields.Integer('Base Cat',related='categry_id.base_category')
brand_id = fields.Many2one('product.category',string="Brand",domain="[('base_category','=',base_category),('complete_name','like','%Brands%')])"
,
对于 int,您放置的默认值应该是 0,而不是 ''。
rec.base_category = int(split_str[1]) if len(split_str) > 1 else ''
,
Integer
类型的字段需要一个整数。所以只需在 else
部分给它一个整数。 Odoo 将 0
设置为默认值,您不能以数据库 None
的形式设置 NULL
。
rec.base_category = int(split_str[1]) if len(split_str) > 1 else 0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。