database - 订单行导入不识别产品外部 ID?
问题描述
我正在尝试将采购订单导入 odoo 并在很大程度上解决了我的问题,但是我无法使用外部 ID 更新产品列表。我可以使用数据库 ID 或产品名称,但是如果我尝试使用外部 ID,我会收到此错误:
在表“purchase_order_line”上插入或更新违反了外键约束“purchase_order_line_product_id_fkey”详细信息:表“product_product”中不存在键(product_id)=(644)。第 2 行和第 4 行之间
有人可以向我解释为什么会发生这种情况以及我必须做些什么来解决它?
解决方案
我猜问题是您使用的是记录的外部 XML IDproduct.template
而不是记录product.product
。
如果是这种情况,您的product.product
记录可能不会有外部 XML ID,因为它们是在数据库中手动创建的,或者通过导入它们各自的产品模板,或者向这些模板添加属性和属性值。
如果您有这个问题,您只能通过先导出产品来为您的产品生成外部 XML ID。如果您在没有外部 XML ID的情况下导出任何记录,则会自动生成该记录以在您的导出文件中的id列下。因此,一种解决方法是选择所有产品(或者最好只选择您要使用的产品),导出它们,从导出的文件中获取它们的外部 XML ID,然后使用它们来导入您的purchase.order.line
记录。
此解决方案的问题
您从一个数据库中获取的External XML ID 不能与您从其他不同数据库中获取的相同,尽管它们具有相似的产品,因此该方法为特定数据库生成的导入文件不能用于其他数据库。
外部 XML ID 存储在数据库中,因此如果您生成数千个,数据库将根据您导出的产品数量而增长。
推荐阅读
- c# - App.Config PostgreSQL Entity Framework 6 的 Npgsql C# 问题
- python-3.x - 如何在 Python 上使用 rawpy 读取图片的 RGB 值
- python - 如果条件为真,我如何比较变量然后分配一个新值?
- git - 带有奇怪分支的 SVN 到 Git 迁移
- java - Java 的未来
- normalization - “规范化”和“规范化”数据之间是否存在明确的区别?
- vue.js - 当值使用计算数据时,如何在 type=Number 上使用货币?
- html - 显示前 2 个 flex 项目彼此居中且顶部对齐
- javascript - 如何下载外部视频而不在浏览器中播放?
- c# - C# System.IO.File.Copy 问题