2009-08-31 9 views
1

Djangoの管理パネルを拡張して、特定のオブジェクト(Fooなど)の追加/変更が行われるようにしたいと考えています。 私はすでに多くの研究をしており、これについては古いバージョンdjangobookで議論しています。django、管理者の追加/変更フォームを拡張する

私のテンプレートディレクトリにadmin/myapp/foo/change_list.htmlを作成し、いくつかのhtmlを追加するなどの経験をしました。うまくいきます。

これは問題が始まるところです。私はこの管理画面の表示を調整する必要があります(全体をオーバーライドするのではなく、それを拡張する)ので、change_list.htmlの小さなGET/POSTフォームで以下のような特定のアクションを実行するために:

は、私は2つのオブジェクトのFooとバーを持っていると言う:

class Bar(models.Model): 
    bar_text = models.TextField() 


class Foo(models.Model): 
    name = models.TextField() 
    my_bar = models.models.ForeignKey(Bar) 

新しいはFooを追加しながら、それがあるべきよう定期的な管理インターフェイスは、私は単一my_barのFOREIGNKEYを選ぶことができ、今度は、すべてのBarオブジェクトに同じ入力(私の例では名前)を接続するページ「add to all」の最後にティックボックスが必要です。保存した後、同じ "名前"フィールドを持ついくつかのFooオブジェクトがあり、それぞれが異なるバー接続を持ちます

答えて

0

管理者を拡張する方法を知っている場合は(あなたの投稿から推測します)フォームのsave()メソッドをオーバーライドします。チェックボックスをオンにすると、すべてのフォームが更新されます。

def save(self): 
    if (self.cleaned_data['save_to_all']): 
     foos = Foo.objects.all() 
     for obj in foos: 
      obj.name = self.cleaned_data['name'] 
      obj.save() 
    super(FooForm, self).save() 

私はあなたが必要としているか、私はsthを逃したのですか?

関連する問題