選択したオブジェクトに変更が加えられる前に (管理者以外で)、確認ページを作成したいと考えています。オブジェクトは異なるモデルにすることができます (ただし、一度に 1 つのモデルのみ)。
これは、削除前に管理者が行っていることとよく似ています。しかし、管理コードは複雑で、そこでどのように行われるかを把握していません。
最初に、オブジェクトを異なる方法でフィルタリングするいくつかのフォームを用意してから、クエリセットをアクション/確認ページに渡します。モデルに応じて異なるクエリセットを定義できるように、フォーム ファクトリを作成しました (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 個のオブジェクトのステータスを変更しますか」のようなものと、ポップダウンと送信ボタンだけです。単純な問題のようですが、うまくいきません。
誰かが私の現在の試みに対する解決策を持っている場合、彼らがそれをどのように行ったかを聞いてうれしいです. よりクリーンでより良い解決策があれば、さらに良いでしょう。