2017-03-20 4 views
0

나는이 방법이 있습니다형식 오류 : 목록 지수는 정수 STR,하지 수 있어야합니다 - Odoo의 V10 커뮤니티

Traceback (most recent call last): 
File "/home/kristian/.virtualenvs/odoov10/lib/python2.7/site-packages/odoo-10.0rc1c_20161005-py2.7.egg/odoo/http.py", line 638, in _handle_exception 
return super(JsonRequest, self)._handle_exception(exception) 
File "/home/kristian/.virtualenvs/odoov10/lib/python2.7/site-packages/odoo-10.0rc1c_20161005-py2.7.egg/odoo/http.py", line 675, in dispatch 
result = self._call_function(**self.params) 
File "/home/kristian/.virtualenvs/odoov10/lib/python2.7/site-packages/odoo-10.0rc1c_20161005-py2.7.egg/odoo/http.py", line 331, in _call_function 
return checked_call(self.db, *args, **kwargs) 
File "/home/kristian/.virtualenvs/odoov10/lib/python2.7/site-packages/odoo-10.0rc1c_20161005-py2.7.egg/odoo/service/model.py", line 119, in wrapper 
return f(dbname, *args, **kwargs) 
File "/home/kristian/.virtualenvs/odoov10/lib/python2.7/site-packages/odoo-10.0rc1c_20161005-py2.7.egg/odoo/http.py", line 324, in checked_call 
result = self.endpoint(*a, **kw) 
File "/home/kristian/.virtualenvs/odoov10/lib/python2.7/site-packages/odoo-10.0rc1c_20161005-py2.7.egg/odoo/http.py", line 933, in __call__ 
return self.method(*args, **kw) 
File "/home/kristian/.virtualenvs/odoov10/lib/python2.7/site-packages/odoo-10.0rc1c_20161005-py2.7.egg/odoo/http.py", line 504, in response_wrap 
response = f(*args, **kw) 
File "/home/kristian/odoov10/odoo-10.0rc1c-20161005/odoo/addons/web/controllers/main.py", line 866, in call_button 
action = self._call_kw(model, method, args, {}) 
File "/home/kristian/odoov10/odoo-10.0rc1c-20161005/odoo/addons/web/controllers/main.py", line 854, in _call_kw 
return call_kw(request.env[model], method, args, kwargs) 
File "/home/kristian/.virtualenvs/odoov10/lib/python2.7/site-packages/odoo-10.0rc1c_20161005-py2.7.egg/odoo/api.py", line 681, in call_kw 
return call_kw_multi(method, model, args, kwargs) 
File "/home/kristian/.virtualenvs/odoov10/lib/python2.7/site-packages/odoo-10.0rc1c_20161005-py2.7.egg/odoo/api.py", line 672, in call_kw_multi 
result = method(recs, *args, **kwargs) 
File "/home/kristian/odoov10/gilda/l10n_ve_fiscal_requirements/wizard/wizard_url_seniat.py", line 77, in update_url 
{'name': data['url1'], 
TypeError: list indices must be integers, not str 
:이 버튼은

@api.multi 
def update_url(self): 
    data = self.env['wizard.seniat.url'].read() 
    url_obj = self._get_url() 
    url_obj.write(
     {'name': data['url1'], 
     'url_seniat': data['url2'], 
     'url_seniat2': data['url3']}) 
    return {} 

때마다 내가 그것을 클릭, 그것은 나에게이 발생합니다

이것은 v8 커뮤니티에서 v10 커뮤니티로 이전하는 모듈입니다.

아이디어가 있으십니까?

편집

이 오래된 API에 원래의 방법입니다 :

def update_url(self, cr, uid, ids, context=None): 
    data = self.pool.get('wizard.seniat.url').read(cr, uid, ids)[0] 
    url_obj = self._get_url(cr, uid, ids, context) 
    url_obj.write(
     {'name': data['url1'], 
     'url_seniat': data['url2'], 
     'url_seniat2': data['url3']}) 
    return {} 
+2

는 당신이 듣고 싶어 기본 ORM? 'data'는 문자열로 색인을 생성 할 수없는 목록입니다. – timgeb

+0

이 필드를 업데이트해야합니다. 어떻게 마이그레이션해야하는지 모르겠습니다. 새 API가 마음에 들지 않습니다. – NeoVe

+0

이전 API에 원래 메소드를 추가 할 것입니다. – NeoVe

답변

1

읽기 사용은() 나쁜 방법입니다. read()는 웹 서비스 호출 에 사용되지만 자신의 메서드 호출에서는 항상 browse()를 사용해야합니다. 뿐만 아니라 코드의 품질을 향상시킬 수 있지만 성능의 경우 더 좋습니다.

- 추가 SQL 쿼리를 생성하는 many2one 필드에 대해 read()를 호출하면 name_get()이 필요하지 않습니다. - browse()는 필드의 프리 페치 및 자동로드에 최적화되어 있습니다. 여기

당신은 시도해야합니다 :

@api.multi 
def update_url(self): 
data = self.env['wizard.seniat.url'].read()[0] 
url_obj = self._get_url() 
url_obj.write(
    {'name': data and data['url1'], 
    'url_seniat': data and data['url2'], 
    'url_seniat2': data and data['url3']}) 
return {} 

당신은 참조 할 수 odoo 10 here