2017-03-17 3 views
0

일부 모듈을 v8에서 v10으로 마이그레이션 중입니다.TypeError : 'instancemethod'객체에 '__getitem__'속성이 없습니다. - Odoov8에서 Odoov10으로 커뮤니티

@api.multi 
def _get_url(self): 

    url = self.env['seniat.url'] 
    url_ids = url.search['seniat.url'] 
    if len(url_ids) > 1: 
     url.unlink.self.env.url_ids[1:] 
    url_obj = self.env['url_ids'].browse() 
    return url_obj 

@api.multi 
def _get_url1(self): 
    url_obj = self._get_url() 
    return url_obj.name 

@api.multi 
def _get_url2(self): 
    url_obj = self._get_url() 
    return url_obj.url_seniat 

@api.multi 
def _get_url3(self): 
    url_obj = self._get_url() 
    return url_obj.url_seniat2 

이 방법이 필드 전화 :

url1 = fields.Char(
    string='URL1', size=255, required=True, readonly=False, 
    default=lambda s: s._get_url1(), 
    help='In this field enter the URL from Seniat for search the' 
    ' fiscal information from partner') 
url2 = fields.Char(
    string='URL2', size=255, required=True, readonly=False, 
    default=lambda s: s._get_url2(), 
    help='In this field enter the URL from Seniat for search the' 
    ' retention rate from partner (RIF)') 
url3 = fields.Char(
    string='URL3', size=255, required=True, readonly=False, 
    default=lambda s: s._get_url3(), 
    help='In this field enter the URL from Seniat for search the' 
    ' retention rate from partner (CI or Passport)') 

내보기 :이 버튼을 클릭하면

<record id="view_wizard_url_seniat" model="ir.ui.view"> 
     <field name="name">view.wizard.seniat.url</field> 
     <field name="model">wizard.seniat.url</field> 
     <field name="arch" type="xml"> 
      <form string="Update Url From Seniat" version="7.0"> 
       <separator string="URL Seniat for Partner Information" colspan="4"/> 
       <field name="url1"/> 
       <newline/> 
       <separator string="URL Seniat for Retention Rate (Rif)" colspan="4"/> 
       <field name="url2"/> 
       <newline/> 
       <separator string="URL Seniat for Retention Rate (CI or Passport)" colspan="4"/> 
       <field name="url3"/> 
       <separator string="Are you sure you want to do this?" colspan="4"/> 
       <group colspan="8" col="8"> 
         <button icon="fa-book" name="update_url" string="Yes" type="object"/> 
         <button icon="fa-pencil-square-o" special="cancel" string="No"/> 
       </group> 
      </form> 
     </field> 
    </record> 

, 그것은 나를 던져

나는이 방법이 이 :

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 862, in call_kw 
return self._call_kw(model, method, args, kwargs) 
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 679, in call_kw 
return call_kw_model(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 664, in call_kw_model 
result = method(recs, *args, **kwargs) 
File "/home/kristian/.virtualenvs/odoov10/lib/python2.7/site-packages/odoo-10.0rc1c_20161005-py2.7.egg/odoo/models.py", line 1101, in default_get 
defaults[name] = field.default(self) 
File "/home/kristian/odoov10/gilda/l10n_ve_fiscal_requirements/wizard/wizard_url_seniat.py", line 41, in <lambda> 
default=lambda s: s._get_url3(), 
File "/home/kristian/odoov10/gilda/l10n_ve_fiscal_requirements/wizard/wizard_url_seniat.py", line 69, in _get_url3 
url_obj = self._get_url() 
File "/home/kristian/odoov10/gilda/l10n_ve_fiscal_requirements/wizard/wizard_url_seniat.py", line 50, in _get_url 
url_ids = url.search['seniat.url'] 
TypeError: 'instancemethod' object has no attribute '__getitem__' 

self.ensure_one()을 배치하지 않았기 때문에 그것이 나올지 모르겠습니다. 오류는 여기에 있습니다 : url_obj = self.env['url_ids'].browse()url_ids = url.search['seniat.url']

마이그레이션이므로 버그가있을 수 있습니다.

아이디어가 있으십니까?

답변

2

대괄호를 사용하여 search 메서드를 호출하고 있습니다.

은 다음과 같아야합니다

url.search(...) 

당신이 방법의 항목/속성에 액세스하려고 및 방법은 통화를 처리 __getitem__ 속성이없는 ['something'] 사용합니다.

+0

고맙습니다. – NeoVe