1

すべてのテーブルに「adduid」フィールドと「moduid」フィールドがすべて存在するレガシーデータベースを使用しています。これらのフィールドは varchar(64) です。

これらは、保存および変更時に実際のユーザー IDでレコードをスタンプします。もちろん、django を使用する場合、これらのフィールドには django db ユーザーが入力されます。

私が望むのは、これらのフィールドにログインしたユーザーを入力する方法です。できればモデル定義で。

これについてどうすればいいですか?(私が見たほとんどのソリューションは、User テーブルへの外部キーの使用に依存しています。ただし、そのフィールドには、fk ではなく、ユーザー名の実際のテキストが必要です)。

前もって感謝します-パトリック

4

1 に答える 1

1

ユーザーはモデルの保存メソッドにアクセスできないため、モデルレベルでこれを行うことはできないと思います。モデルは、ユーザーの関与なしに保存できます (たとえば、celery などのタスク管理アプリによって)。ただし、ユーザーはHttpRequestビューに渡されたオブジェクトで利用できるため、ビューでそれを行うことができます。

def your_view(request):
    # get your object
    obj.modified = request.user.username
    obj.save()

オーバーライドできるdjangoのsave_model関数もあります。ModelAdmin何かのようなもの -

def save_model(self, request, obj, form, change):
    obj.modified = request.user.username
    obj.save()
于 2013-02-23T16:01:20.310 に答える