簡體   English   中英

如何重寫Odoo v.9中的search_read()方法?

[英]how to override search_read() method in Odoo v.9?

受影響的版本:9.0

我嘗試根據類別限制某些產品。

我有重寫name_search()方法,該方法對於Many2one字段工作正常。 但是,當我從Many2one字段中的“搜索更多”選項中搜索產品或從列表視圖中的搜索菜單中搜索產品時,就會向我顯示該產品。

我嘗試了以下代碼:

class ProductTemplate(models.Model):

    _inherit = "product.template"

    def search_read(self, model, fields=False, offset=0, limit=False, domain=None, sort=None):

        res = super(ProductTemplate, self).search_read(model, fields=fields, offset=offset, limit=limit, domain=domain, sort=sort)

        return res

但這給了我以下的追溯。

2016-07-29 05:09:01,167 9750 ERROR enterprise openerp.http: Exception during JSON request handling.
Traceback (most recent call last):
  File "/home/odoo9/odoo-9.0e-20160127/openerp/http.py", line 643, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/home/odoo9/odoo-9.0e-20160127/openerp/http.py", line 680, in dispatch
    result = self._call_function(**self.params)
  File "/home/odoo9/odoo-9.0e-20160127/openerp/http.py", line 316, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/home/odoo9/odoo-9.0e-20160127/openerp/service/model.py", line 118, in wrapper
    return f(dbname, *args, **kwargs)
  File "/home/odoo9/odoo-9.0e-20160127/openerp/http.py", line 309, in checked_call
    result = self.endpoint(*a, **kw)
  File "/home/odoo9/odoo-9.0e-20160127/openerp/http.py", line 959, in __call__
    return self.method(*args, **kw)
  File "/home/odoo9/odoo-9.0e-20160127/openerp/http.py", line 509, in response_wrap
    response = f(*args, **kw)
  File "/home/odoo9/odoo-9.0e-20160127/openerp/addons/web/controllers/main.py", line 847, in search_read
    return self.do_search_read(model, fields, offset, limit, domain, sort)
  File "/home/odoo9/odoo-9.0e-20160127/openerp/addons/web/controllers/main.py", line 868, in do_search_read
    request.context)
  File "/home/odoo9/odoo-9.0e-20160127/openerp/http.py", line 1064, in proxy
    result = meth(cr, request.uid, *args, **kw)
  File "/home/odoo9/odoo-9.0e-20160127/openerp/api.py", line 250, in wrapper
    return old_api(self, *args, **kwargs)
TypeError: search_read() takes at most 7 arguments (9 given)

問題

  1. 如何限制用戶繞過從搜索菜單中選擇產品?

  2. 如何覆蓋search_read()方法?

應該是這樣的:

@api.model
def search_read(
        self, domain=None, fields=None, offset=0,
        limit=None, order=None):
    res = super(ProductTemplate, self).search_read(
        domain, fields, offset, limit, order)
    return res

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM