2017-03-17 66 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(...) 

當您使用['something']您試圖訪問方法的項目/屬性和方法沒有一個__getitem__屬性來處理這樣的電話。

+0

剛注意到,非常感謝 – NeoVe

相關問題