2017-08-10 4 views
0

いくつかのフィールドを自動的に埋めるウィジェットを作成しました。基本的に私は、Googleマップgeolocateからいくつかの値をチェックしており、それらの値が何であるかに応じて他のフィールドを埋めています。私のフォームにすでにある値をチェックする必要があります。現時点で何が起こるのですか?以前に保存された値だけが得られます。変更された場合、私はまだ古い値を取得します。その価値をリアルタイムで得る方法があれば、私の質問ですか?ウィジェットに渡される他のフィールドのJの値を取得する方法は? Odoo

私のコードは次のようなものです:

var gmap_autocomplete = form_common.AbstractField.extend({ 

// functions such as start, init, on_ready... 
setFields : function (fieldName, fieldValue) { 
     var not_vat_payer = this.view.datarecord[this.node.attrs.check_not_vat]); 

     // Here I get the value that I want of previous form save 
     // for example if value was true, I came here and triggered this 
     //widget I will get value true, but if I change it to false 
     // I will still get true value of previous save 

} 

}); 

ウィジェットと私のフィールドには、次のようになります。

<field name="not_vat2"/> 
<field name="autocomplete" class="autoc" widget="gmap_autocomplete" street="street" 
            city="city" zip="zip" country_id="country_id" lang="lang" invoice_lang="invoice_lang" 
            property_account_payable_id="property_account_payable_id" 
            property_account_receivable_id="property_account_receivable_id" 
            check_not_vat="not_vat2"/> 
+0

javascriptで値を更新するたびに、jsコードからpythonメソッドを呼び出す必要があります。あなたはそれをする方法を知っていますか? –

+0

実際に私は同じ考えをしていましたが、そのようなことをやろうとしましたが、うまくいきませんでした。正しく行う方法がわかりません。 – enigmq

+0

新モデル( 'res.parnter') は.call( "get_vat"、[]) の.done(機能(レコード){ はconsole.log(レコード) }) } – enigmq

答えて

0

exmple.js

メイクのようなものを変更する...

var model_obj = new Model('model.name'); 
var gmap_autocomplete = form_common.AbstractField.extend({ 

// functions such as start, init, on_ready... 
setFields : function (fieldName, fieldValue) { 
     var not_vat_payer = this.view.datarecord[this.node.attrs.check_not_vat]); 
     new_val = false; 
     model_obj.call('method_name',[new_val]).then(function(result){}); 

} 

}); 
この関係なく、そのデシベルかに保存されていないビューにあるフィールドの値を返します。

example.py

@api.model 
def method_name(self,new_val): 
    //write code for change field value 
+0

私のチェックボックスはTrueに設定されています。関数def get_not_vat(self)を呼び出すと: print self.not_vat2 return self.not_vat2、Pyhhonで呼び出されたときにtrueを返し、JSから呼び出されたときに常にfalseを返します。 – enigmq

+1

python関数はデータベースから値を返し、javascript関数はチェックボックスから現在の値を返すためです。あなたはpythonを使ってデータベースに値を書き、javascriptのpython関数から値を取得することでチェックボックスに同じ値を設定する必要があります。 –

+0

さて、Javascripはデータベースからの値も返します。あなたがそれを変更しても、データベースから値を取得します。そして、Python関数ではdbの値は何もなく、Falseを返します。私は実際の価値がキャッシュのどこかに保存されていると思います。何とかそれに到達する必要があります。 – enigmq

0

は本当に簡単です解決策を見つけました。

this.field_manager.get_field_value('field_name'); 
関連する問題