2011-06-29 8 views
0

選択したオブジェクトの変更を行う前に(管理者以外の)選択したオブジェクトの確認ページを作成したいと思います。オブジェクトは異なるモデル(ただし、1つのモデルのみ)である可能性があります。Django - 異なるモデルを変更する前の確認ページ

これは、削除前の管理で行われている操作とよく似ています。しかし、管理コードは複雑で、私はそれがどのように行われたのか把握していません。

最初に私は、オブジェクトを別々にフィルタリングするseverallフォームを持っています。そして、クエリーセットをアクション/確認ページに渡します。私は、モデルによって異なるクエリセットを定義することができるように、私は(ここでStackOverflowので、別の似質問に見られるように)フォームファクトリを作成しました:

私は私の見解で使用
def action_factory(queryset): 
    ''' Form factory that returns a form that allows user to change status on commissions (sale, lead or click) 
    ''' 
    class _ActionForm(forms.Form): 
     items = forms.ModelMultipleChoiceField(queryset = queryset, widget=forms.HiddenInput()) 
     actions = forms.ChoiceField(choices=(('A', 'Approve'), ('D' ,'Deny'), ('W' ,'Under review'), ('C' ,'Closed'))) 
    return _ActionForm 

context['form']=action_factory(queryset)() 

問題は、項目フィールドが隠れているときにhtmlコードに表示されないことです。 HiddenInputウィジェットを削除すると、フォームが正しく表示されます。

何千ものオブジェクトが存在する可能性があるため、選択フィールドを表示したくありません。私が望むのは、「1000個のオブジェクトのステータスを変更しますか?」とポップダウンとサブミットボタンのようなものです。シンプルな問題だと思われますが、それを動作させることはできません。

誰かが私の現在の試みに対する解決策を持っているなら、彼らがそれをやった方法を聞いてうれしいです。よりクリーンで優れたソリューションがあればさらに良いでしょう。

答えて

0

間違ったウィジェットを使用しました。 HiddenInputではなくMultipleHiddenInputである必要があります。

関連する問題