我正在获取的记录不存在或已被删除。\n(记录:account.move.line(5398,(,用户:7(将数据更新到odoo时出错。以下是我的代码,任何人都可以帮助解决这个问题。
import xmlrpc.client
endpoint_url = "/api/account.move/"
obj = get_object_or_404(OrderItem, order__id=order_id)
invoice_date = obj.order.created_on
name = obj.product.varient_name
price = obj.total
quantity = obj.quantity
payment_source = obj.order.payment_method
payment_reference = obj.order.order_number
common = xmlrpc.client.ServerProxy('{}/xmlrpc/2/common'.format(url))
uid = common.authenticate(db, username, password, {})
models = xmlrpc.client.ServerProxy('{}/xmlrpc/2/object'.format(url))
ids = models.execute_kw(db, uid, password, 'account.move', 'search_read', [[['source_document', '=', payment_reference]]], {'fields': ['partner_id', 'id']})
invoice_id = ids[0]['id']
partner_id_ = ids[0]['partner_id'][0]
headers = {
"access-token":tokens,
"Content-type":"application/jsonp",
"Cookie":session_id
}
api_invoice_line_id = [(1, invoice_id,{'name':name, 'price_unit':price, 'quantity':quantity})]
data = {
"partner_id":partner_id_,
"invoice_date":str(invoice_date),
"move_type":"out_invoice",
"__api__invoice_line_ids":str(api_invoice_line_id),
"payment_source":payment_source,
"source_document": payment_reference,
"rider":rider_name,
"ref":""
}
datas_ = json.dumps(data, indent=4)
req = requests.put(url+endpoint_url+str(invoice_id), headers=headers, data=datas_)
if req.status_code == 200:
status = "Update Successful"
else:
status = str(req.text)
return status
您的代码似乎失败了,因为您在__api__invoice_line_ids
中提供了插入/更新数据的元组。
我想这是一些account.move.line
Many2many或One2many字段。
我看到您使用的命令1带有invoice_id
(一个account.move
id(和dict中的一些数据
这里的问题是,您试图将其添加到指向account.move.line
的字段中。因此,您的ID 5398是account.move
ID,而不是account.move.line
ID。
不确定你在这里的目标是什么。如果是用新数据推送/更新一些account.move记录,请将您的__api__invoice_line_ids
更改为指向account.move.
如果你的目标是推送/更新一些account.move.line
记录,那么你最好在invoice_id
的line_ids
上循环:(
如果我不清楚什么,或者你有任何其他问题,请不要犹豫!