2009-03-11 20 views
0

私はデータ管理のためにDjango adminを使用しています。 ユーザー、グループ、およびドメインテーブルがあります ユーザーテーブルには、グループとドメインテーブルとの関係が多岐にわたります。 ドメインテーブルは、グループテーブルと1対多の関係を持っています。 adminを使用してUserデータを保存すると、users_groupテーブルとusers_domainsテーブルにいくつかの追加データベースの更新が必要になります。 どうすればいいですか?どこにコードを記述しますか?おかげさまで Django Admin

答えて

2

私はあなたがInlineModelsを探していると思います。それらを使用すると、親モデルと同じページ内の関連するモデルを編集できます。これ以上のコントロールが必要な場合は、ModelAdmin save methodsを無効にすることができます。

また、必要なときには常にManualをチェックしてください。それは本当にとても良いです。

+0

パオロ: 私はsaveメソッドをオーバーライドする必要があるように見えます。 私が前に述べたように、いくつかのデータベーステーブルを更新する必要があります。残りの操作は通常どおり実行します。それ、どうやったら出来るの。 ありがとう –

+0

ドキュメントの例を参照してください。 AdminModelクラスにsave_modelという名前の関数を定義し、そこに必要な処理を行います。 –

+0

私はsave_modelで遊んでいました。 save()を明示的に呼び出さなくても、ここに置かれたステートメントが実行され、save操作が実行されるように見えます。これは正しい行動ですか?私はdjangoのWebサイトでそれ以上のドキュメントを見つけることができません。ありがとう。 –

0

他のデータベーステーブルを更新する最もよい方法は、必要な取得および保存操作を実行することです。ただし、多対多の関係を持つ場合、デフォルトでは、関係の両側は_setパラメーターからアクセスできます。つまり、user.group_set.all()はユーザーに関連付けられたすべてのGroupオブジェクトを提供し、group.user_set.all()はグループに関連付けられたすべてのUserオブジェクトを提供します。あなたがメソッドを保存(または信号リスナーを登録する - 文体より満足に聞こえる方オプション)をオーバーライドあれば、試してみてください。

for group in user.group_set.all(): 
    #play with group object 
    .... 
    group.save()