Hello,
When I update data with an override "write" function, I do a post request for an external application with the id of changed record (cf: the code bellow). Then the app get the values in postgres but the values hasn't change at this time.
@api.multi
def write(self, values):
for record in self:
res = super(my_class_xxxx, self).write(values)
data = {"id": record.id}
requests.post("https://us-central1-xxxxxxxx.com", data=data)
return res
I think the record is update in Odoo but the value of the database change when the write function is returned.
What can I do for call the endpoint when the data has changed in postgres?
Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:
- 客户关系管理
- e-Commerce
- 会计
- 库存
- PoS
- Project
- MRP
此问题已终结
hmm you are right is not committed yet DB. it's committed when request return result
I think you need to explicitly commit the cursor to stored data forcefully in DB like
@api.multi
def write(self, values):
for record in self:
res = super(my_class_xxxx, self).write(values)
data = {"id": record.id}
record.env.cr.commit()
requests.post("https://us-central1-xxxxxxxx.com", data=data)
return res
Hi Theo:
You may want to consider using an Automated Action (Settings > Technical > Automation) to invoke the api on the On Creation trigger condition of the model.
Thank you both for your answers, the method of Ravi Gadhia works perfectly so I haven't tried your's Paresh Wagh but I think it can works too :)
it will not work because odoo commits the cursor/transaction when the response despatched.
相关帖文 | 回复 | 查看 | 活动 | |
---|---|---|---|---|
|
18
8月 18
|
19920 | ||
|
2
3月 25
|
431 | ||
|
6
12月 23
|
45025 | ||
|
1
4月 25
|
758 | ||
|
0
2月 25
|
519 |