web-dev-qa-db-ja.com

Django manage.py --no-input。はいまたはいいえ?

私はこれをドキュメントで見つけることができません。 python manage.py collecstatic --no-inputを実行すると、プロセスでポップアップするプロンプトに対して「はい」と応答することになりますか? python manage.py migrate --no-inputも同様です。

19

Collectstaticの場合:

    message.append(
        'Are you sure you want to do this?\n\n'
        "Type 'yes' to continue, or 'no' to cancel: "
    )

    if self.interactive and input(''.join(message)) != 'yes':
        raise CommandError("Collecting static files cancelled.")

したがって、収集静的の場合、--no-inputinteractiveFalseに設定し、上記のように、質問にyesと答えます。

移行の場合、Djangoシグナリングのため、はるかにトリッキーです。migrate管理自体は質問しませんが、インストールされている他のアプリがpre_migrate_signalまたはpost_migrate_signalおよび独自の方法で対話性を処理します。私が知っている最も一般的なものはcontenttypesです

contenttypesの場合、--no-input「いいえ、古いコンテンツタイプは削除しないでください」のように「いいえ」と答えます。

        if interactive:
            content_type_display = '\n'.join(
                '    %s | %s' % (ct.app_label, ct.model)
                for ct in to_remove
            )
            ok_to_delete = input("""The following content types are stale and need to be deleted:

%s

Any objects related to these content types by a foreign key will also
be deleted. Are you sure you want to delete these content types?
If you're unsure, answer 'no'.

    Type 'yes' to continue, or 'no' to cancel: """ % content_type_display)
        else:
            ok_to_delete = False
31
2ps