2

フィールドの値を計算し、その値を DB に保存しようとしています。すべてを削除するstore=Trueと問題ないように見えますが、関数からの結果を表示する代わりにパラメーターを追加すると、すべてのフィールドで 0 が表示されます。

また、ツリー ビューまたはフォーム ビューを表示しているときに、計算フィールド関数が呼び出されていないことにも気付きました。

私のコードは次のようになります。

@api.one
    def _compute_fats(self):

        for record in self:
            fats = 0
            fats_id = record.name.id
            get_detail = self.env['trackfood.foods'].search([['id', '=', fats_id],])
            for record2 in get_detail:
                fats = record2.fats

        self.fats = fats

fats = fields.Float(compute='_compute_fats', string="Fat" , store=True)

私の全体的な目的はfats、各製品の金額を取得し、追跡テーブルに保存して、チャートを作成できるようにすることです。

どんなヒントでも大歓迎です、ありがとう

4

3 に答える 3

1

メソッドに「依存」定義を追加します。このメソッドは、従属フィールドの値が変更されるたびに常に (そしてのみ) 呼び出されます。

@api.multi
@api.depends('name')        # seems to depend on record.name ??
def _compute_fats(self):
    for record in self:
        fats = 0
        fats_id = record.name.id     # Are you sure this is correct??
        get_detail = self.env['trackfood.foods'].browse([fats_id])   # Faster search by id
        for record2 in get_detail:
            fats = record2.fats

        record.fats = fats
于 2015-11-06T20:58:40.120 に答える
1

デコレータ multi を使用して依存し、

@api.multi
@api.depends('name')
def function_name(self):
    result= your_code
    self.fats = result 
于 2017-05-11T11:36:25.187 に答える
1

フォローしてみて、

@api.multi
def _compute_fats(self):
    for record in self:
        fats = 0
        fats_id = record.name.id
        get_detail = self.env['trackfood.foods'].search([['id', '=', fats_id],])
        for record2 in get_detail:
            fats = record2.fats

        record.fats = fats

これが役立つことを願っています。

于 2015-03-16T04:32:27.650 に答える