Odoo:创建新记录时的完整性错误

时间:2015-09-28 09:13:34

标签: python openerp recordset

我正在尝试在stock.quant中插入一条新记录。当我通过这个SQL查询尝试它时,这可以工作:

INSERT INTO stock_quant (create_date, qty, create_uid, location_id, company_id, write_date, write_uid, product_id, in_date) VALUES (now(), +20, 1, 12, 1, now(), 1, 8, now())

现在我想在Odoo做同样的事情。 我试过这样的话:

stock_quant_obj = self.env[('stock.quant')]
stock_quant = stock_quant_obj.search_read(['&', ('product_id', '=', id_huidigproduct), ('realtimemeting', '=', True)], ['qty']) 
if stock_quant == []:
    stock_quant_obj.create({'product_id': self.id, 'qty': 100, 'location_id:': 12, 'company_id': 1, 'realtimemeting': True})

但是这给了我一个完整性错误:

  

完整性错误

     

操作无法完成,可能是由于以下原因:

     
      
  • 删除:您可能正在尝试删除记录,而其他记录仍然引用它
  •   
  • 创建/更新:未正确设置必填字段
  •   
     

[引用对象:location_id - location.id]

我认为这可能与location_id是stock.quant中的many2one字段有关。但是product_id也是如此,它不会给出错误。

我也尝试用obj_magazijn和obj_magazijn.id替换“12”:

obj_magazijn ==> stock.location(12,)
obj_magazijn.id ==> 12

obj_magazijn = self.env[('stock.location')].search([('id', '=', 12)])

有谁知道这个错误的真正原因和/或知道解决方案吗?

1 个答案:

答案 0 :(得分:1)

除了语法之外,我认为没有任何错误。

self.env [('stock.quant')] 替换为 self.env ['stock.quant']

详细了解Environment

stock_quant_obj = self.env['stock.quant']
#### here id_huidigproduct is unknown for me.
stock_quant = stock_quant_obj.search_read([('product_id', '=', id_huidigproduct), ('realtimemeting', '=', True)], ['qty']) 
if not stock_quant :
    stock_quant_obj.create({'product_id': self.id, 'qty': 100, 'location_id:': 12, 'company_id': 1, 'realtimemeting': True})