【问题标题】:Filter with a computed field is not working [Odoo 8]带有计算字段的过滤器不起作用 [Odoo 8]
【发布时间】:2022-11-24 02:47:41
【问题描述】:

我必须在树视图中显示发票的附件数量。没关系,我正在用计算机来做。

我还必须能够过滤附有文件的发票,这就是问题所在。我无法在搜索中使用此字段,因为它没有 store=True 属性,如果我添加它,计算属性将停止工作

我正在调查,有一个 search=" " 属性可以放在字段上 我现在就是这样,但出于某种原因,它对我不起作用。

attachment_count = fields.Integer(string="QAF", compute='count_attachments', search='_search_att_count')

    @api.one
    def count_attachments(self):
        # code

    def _search_att_count(self, operator, value):
        field_id = self.search([])
        if operator == '=':
            field_id = [x.id for x in field_id if x.attachment_count == value]
        return [('id', 'in', field_id)]

我收到此错误:

 Traceback (most recent call last):   File
 "/opt/odoo/odoo/openerp/http.py", line 546, in _handle_exception
     return super(JsonRequest, self)._handle_exception(exception)   File "/opt/odoo/odoo/openerp/http.py", line 583, in dispatch
     result = self._call_function(**self.params)   File "/opt/odoo/odoo/openerp/http.py", line 319, in _call_function
     return checked_call(self.db, *args, **kwargs)   File "/opt/odoo/odoo/openerp/service/model.py", line 118, in wrapper
     return f(dbname, *args, **kwargs)   File "/opt/odoo/odoo/openerp/http.py", line 316, in checked_call
     return self.endpoint(*a, **kw)   File "/opt/odoo/odoo/openerp/http.py", line 812, in __call__
     return self.method(*args, **kw)   File "/opt/odoo/odoo/openerp/http.py", line 412, in response_wrap
     response = f(*args, **kw)   File "/opt/odoo/odoo/addons/web/controllers/main.py", line 884, in
 search_read
     return self.do_search_read(model, fields, offset, limit, domain, sort)   File "/opt/odoo/odoo/addons/web/controllers/main.py", line
 905, in do_search_read
     request.context)   File "/opt/odoo/odoo/openerp/http.py", line 917, in proxy
     result = meth(cr, request.uid, *args, **kw)   File "/opt/odoo/odoo/openerp/api.py", line 268, in wrapper
     return old_api(self, *args, **kwargs)   File "/opt/odoo/odoo/openerp/models.py", line 5184, in search_read
     record_ids = self.search(cr, uid, domain or [], offset=offset, limit=limit, order=order, context=context)   File
 "/opt/odoo/odoo/openerp/api.py", line 268, in wrapper
     return old_api(self, *args, **kwargs)   File "/opt/odoo/odoo/openerp/models.py", line 1650, in search
     return self._search(cr, user, args, offset=offset, limit=limit, order=order, context=context, count=count)   File
 "/opt/odoo/odoo/openerp/api.py", line 268, in wrapper
     return old_api(self, *args, **kwargs)   File "/opt/odoo/odoo/openerp/models.py", line 4687, in _search
     query = self._where_calc(cr, user, args, context=context)   File "/opt/odoo/odoo/openerp/api.py", line 268, in wrapper
     return old_api(self, *args, **kwargs)   File "/opt/odoo/odoo/openerp/models.py", line 4500, in _where_calc
     where_clause, where_params = e.to_sql()   File "/opt/odoo/odoo/openerp/osv/expression.py", line 1287, in to_sql
     q, p = self.__leaf_to_sql(leaf)   File "/opt/odoo/odoo/openerp/osv/expression.py", line 1154, in
 __leaf_to_sql
 Blockquote
     "Invalid value %r in domain term %r" % (right, leaf) AssertionError: Invalid value account.invoice(29521, 24984, 16542,
 23652, 23651, 28875, 36436, 9637, 24800

且数连续

【问题讨论】:

    标签: python odoo odoo-8


    【解决方案1】:

    您的“if”条件代码很好。

    此行中的问题:

    field_id = self.search([])    # return a list of recordsets
    

    改成

    field_id = self.search([]).ids   # return a list of record ids
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-01
      • 2020-10-21
      • 2018-07-08
      相关资源
      最近更新 更多