Я видел везде, что добавил odoo cr, uid, ids, context. кр, UID и Идентификаторы может быть понятно, но контекст для чего? почему это так важно?Контекст не обновлен в onchange method (odoo-v8)
В контексте наблюдения я обнаружил, что это простой словарь, который в основном содержит часовой пояс и лишь немного больше информации, поэтому он ограничен только этими значениями или чем-то большим, что тоже важно?
Как мы можем использовать его лучше в программировании? Каковы преимущества контекста и каковы недостатки?
Проблема
Я хочу обмениваться информацией между двумя OnChange методами, которые являются взаимозависимыми, как поле скидка и цена - (новый апи odoo8).
В то время как скидка обновляется, цена будет изменена, и в то время как цена обновленной скидки будет обновлена.
вот мой код
@api.onchange('discount')
def discount_change(self):
ctx = self.env.context.copy()
if ctx.get('list_price_updated',False):
return True
ctx.update({'discount_updated':True})
new_obj = self.with_context(ctx)
PPC = (self.rapnet_price + (self.rapnet_price * self.discount/100)
list_price = PPC * new_obj.weight
new_obj.price_caret = PPC
new_obj.list_price = list_price
@api.onchange('list_price')
def list_price_change(self):
ctx = self.env.context.copy()
if ctx.get('discount_updated',False):
return True
ctx.update({'list_price_updated':True})
new_obj = self.with_context(ctx)
list_price = self.list_price/self.weight
new_discount = (1 - (list_price/self.rapnet_price)) * -100
new_obj.price_caret = list_price
new_obj.discount = new_discount
new_obj = self.with_context (CTX) с помощью этой строки я получаю значение контекста, но не вызывать другие OnChange, используя себя, а не new_obj другой OnChange звонить, но контекст не будет обновляться.
ссылка полезна, но вы действительно думаете, что контекст для обмена информацией является доверительным способом? –
ну, вообще-то да, но я знаю хотя бы 1 случай, когда он не работает: [link] (http://stackoverflow.com/questions/31677549/openerp-when-in-view-mode-fields-lose-context) –