我正在尝试将采购订单导入odoo,并在很大程度上解决了我的问题,但是我无法使用外部ID更新产品列表。我可以使用数据库ID或产品名称,但是,如果尝试使用外部ID,则会出现此错误:
在表“ purchase_order_line”上插入或更新违反了外键约束“ purchase_order_line_product_id_fkey”详细信息:表(product_product)中不存在键(product_id)=(644)。在第2行和第4行之间
有人可以向我解释为什么会发生这种情况,并且我必须做些什么来解决它?
答案 0 :(得分:1)
我想问题是您正在使用product.template
记录的外部XML ID 而不是product.product
记录。
如果是这种情况,则您的product.product
记录可能不会具有外部XML ID ,因为它们是在数据库中手动创建的,或者通过各自的导入而创建的产品模板,或向这些模板添加属性和属性值。
如果遇到此问题,则只能通过先导出产品来生成产品的外部XML ID 。如果您导出没有外部XML ID 的任何记录,则该记录将自动生成,并在您的导出文件中的 id 列下。因此,一种解决方法是选择所有产品(或者最好只选择要使用的产品),将其导出,从导出的文件中获取其外部XML ID ,然后使用它们来导入{ {1}}条记录。
此解决方案的问题
尽管从数据库获得的外部XML ID具有相似的产品,但它们不能与从其他不同数据库获得的XML ID相同,因此,该方法为特定数据库生成的导入文件不能为其他数据库工作。
外部XML ID存储在数据库中,因此,如果生成数千个,则数据库将根据导出的产品数量而增长。