Viewなどのコードから管理コマンドを実行できるcall_command

Django管理コマンドをViewなどでも利用したい場合、django.core.management.call_command を利用することで実行出来ます。

https://docs.djangoproject.com/ja/5.1/ref/django-admin/#running-management-commands-from-your-code

に記載があります。

シンプルに呼び出すだけだと、以下のような形です。

from django.core.management import call_command

def call_commands(request):
    call_command("呼びたいDjango管理コマンドの名前")
    # 他の処理があれば記述...

もちろん、引数、名前付き引数の形で渡すことも可能です。

「あれ、管理コマンドで実装したこの機能を呼び出す場合ってどうするんだっけ・・・」と調べましたが、こう言う方法がありました。

memo

Django管理コマンドの規定クラスのBaseCommand.executeには以下の説明がありました。

カスタム管理コマンドを実行するためにコード中から execute() を直接呼び出す事は避けてください。代わりに call_command() を利用してください。

https://docs.djangoproject.com/ja/5.1/howto/custom-management-commands/#django.core.management.BaseCommand.execute

ちゃんと外部から呼び出されるように作ったものを実行しましょう、と言うことだと予想しています。