2

Odoo 9 で計算フィールドで検索しようとしていますが、結果としてすべてのレコードが返されます。

class Version(models.Model):
    _name='product_cars_application.version'

    name = fields.Char(compute="_get_name", store=True)

    @api.one
    def _get_name(self):
        self.name = "%s %s %s (%s)" % (self.brand_id,
                                       self.model_id.name,
                                       self.vname,
                                       self.year_id)

私はそれを使って試してみましstore=Trueたが、名前フィールドはデータベースに保存されていません。また、データベースから列「名前」を削除しようとしましたが、モジュールを更新しましたが、計算が保存されていません。計算フィールドはフォーム ビューで正常に機能しますが、名前が保存されず、検索が機能しません。

では、フィールド名で検索するにはどうすればよいでしょうか。

4

2 に答える 2

1

これをコードに追加します。

 def _name_search(self,name, args=None, operator='ilike', limit=100):
    if operator == 'like': 
       operator = 'ilike'

    versions=self.search([('name', operator, name)], limit=limit)
    return versions.name_get()

 name = fields.Char(compute=_get_name, store=True,search=_name_search)

ドキュメントで詳細を確認できます。

https://www.odoo.com/documentation/8.0/reference/orm.html

セクション「計算フィールド」はあなたのためのものです。

うまくいけばうまくいくでしょう。お知らせ下さい。

于 2016-11-26T15:29:18.683 に答える