私が知る限り、これは「すぐに使える」オプションでは不可能ですが、これが私があなたがやりたいことをやろうとする方法です。
私たちが気にするコードのビットはこのtemplatetagです-これはあなたがそれを何に設定したかに関係なく、show_save_and_add_another
オーバーライドするようです。show_save_and_continue
また、まったく新しいコンテキストを作成し、特定の値のみをコピーします(これが何であるかは明確ではありません)。そのため、必要なものを取得するには、コンテキストを変更する必要があります。
それで:
- 既存のタグを再利用するか(okmの例を参照)、完全に複製することにより、デフォルトのタグの機能を複製するテンプレートタグを作成します。ここでの唯一の変更は
show_save_and_add_another
、元のコンテキストを上書きせずに保持するか、独自のreally_hide_save_and_add_another_damnit
コンテキスト変数を渡す必要があることです。
- change_form.htmlを置き換えて、独自のテンプレートタグを含めて使用し、
submit_row
それを置き換えます。
- 追加のコンテキスト変数を使用するオプションを選択した場合は、change_form.htmlを更新し、ボタンを別の条件ステートメントでラップします。
次に、どのオプションを選択したかに関係なく、ModelAdminを次のように更新します(Djangoドキュメントのこれに基づく):
class MyModelAdmin(admin.ModelAdmin):
# ...
def change_view(self, request, object_id, form_url='', extra_context=None):
extra_context = extra_context or {}
extra_context['show_save_and_add_another'] = False
# or
extra_context['really_hide_save_and_add_another_damnit'] = True
return super(MyModelAdmin, self).change_view(request, object_id,
form_url, extra_context=extra_context)
更新:元の応答は、submit_rowが元のコンテキスト全体を渡さないことを考慮していませんでした。