0

.py ファイル: ….

namex=fields.Text()

moifier=fields.Many2one('res.users', string=”Modifier”)

…</p>

一部のユーザーが「namex」を変更すると、そのユーザーの名前がフィールド「modifier」に自動的に記録されます。どのようなコードを作成すればよいですか? 「onchange/depends」を試しましたが失敗しました。多分修飾子は「テキストフィールド/文字フィールド」でしょうか?

さらに、「access_rule」を設定して、ユーザーが自分のグループのメンバーによって作成されたレコードのみが表示されるように設定しますか?

4

2 に答える 2

1

Odoo にはすでにそれがあります。すべてのモデルにはこれらのフィールドがあり、作成または作成するたびに自動的に作成および更新されます。

  • create_date (datetime): レコードが作成されたとき
  • create_uid (many2one): このレコードを作成したユーザー
  • write_date (datetime): レコードが最後に更新された時刻
  • write_uid (many2one): このレコードを最後に更新したユーザー

詳細については、[設定] > [技術] > [データベース構造] > [モデル] に移動してください。

于 2016-07-22T03:25:19.050 に答える
1

Odoo はレコードを最後に変更したユーザーを追跡しますが、フィールドごとの修飾子は保持されません。多くの場合、そのような機能の関心が見られます。

特定のモデルに対してこれを行うにはwrite、このモデルのメソッドを再定義することが 1 つの可能性です。.py ファイルに、次のようなものを追加できます。

@api.model
def write(self):
    if self.namex in values:
        values.update({'modifier': uid})
    super().write(cr, uid, ids, values, context)

より柔軟な方法でこれを行う別の方法は、@onchange デコレータを使用することです。

@onchange('your_sensible_field_name'):
def set_modifier(self):
    self.modifer = self.env.user

@depends デコレータも参照してください。

于 2016-07-22T06:40:25.057 に答える