如何在models.py文件中获取JS的值。 我创建了天气信息模型,其中当前天气取自纬度和经度。我使用了openweathermap.org的api但无法获取当前位置的数据。 我使用以下代码进行编码。
.py文件
WEATHER_API_LAT_LON = "%s/weather?appid=%s&units=metric&lat={}&lon={}" % (API, APP_ID)
@api.multi
def get_weather_info(self,lat, lon):
url = WEATHER_API_LAT_LON.format(lat, lon)
print(url)
.js文件
var GetLocation = function getLocation() {
if (navigator.geolocation) {
return navigator.geolocation.getCurrentPosition(showPosition);
}
else {
alert("Geolocation is not supported by this browser.");
}
}
function showPosition(position) {
var lat = position.coords.latitude;
var lon = position.coords.longitude;
console.log(lat);
console.log(lon);
}
从JS获取位置并合并到.py模型lat和lon。 任何人都可以告诉你如何做到这一点。
答案 0 :(得分:0)
对于Odoo 10
* model.py
@api.multi
def get_weather_info(self,lat, lon):
url = WEATHER_API_LAT_LON.format(lat, lon)
print(url)
return url
*。JS
// on header
var Model = require('web.Model');
// inside main function
var model = new Model('model.name').call('get_weather_info',[]).then(function(result){
console.log(result)
});
对于Odoo 11
*。JS
var self = this;
self._rpc({
model: 'model.name',
method: 'get_weather_info',
}, []).then(function(result){
console.log(result)
})
在调用model.py
中的方法时,在数组中传递lat和lon答案 1 :(得分:0)
<强> *。model.py 强>
@api.multi
def get_weather_info(self,lat, lon):
url = WEATHER_API_LAT_LON.format(lat, lon)
print(url)
*。js for odoo 11
var self = this;
self._rpc({
model: 'model.name',
method: 'get_weather_info',
args: [], //Here you have to pass the arguments using keyword agrs.
}).then(function(result){
console.log(result)
})