this tutorialの次のカスタム管理コマンドを作成しました。カスタムDjango管理/ manage.pyコマンドに確認手順を追加
from django.core.management.base import BaseCommand, CommandError
from django.contrib.auth.models import User
from topspots.models import Notification
class Command(BaseCommand):
help = 'Sends message to all users'
def add_arguments(self, parser):
parser.add_argument('message', nargs='?')
def handle(self, *args, **options):
message = options['message']
users = User.objects.all()
for user in users:
Notification.objects.create(message=message, recipient=user)
self.stdout.write(
self.style.SUCCESS(
'Message:\n\n%s\n\nsent to %d users' % (message, len(users))
)
)
私はそれがしたいとそれが正確に動作しますが、あなたが本当にNのユーザーにメッセージXを送信したい場合、私はfor user in users:
ループの前に、あなたが尋ねているように、確認ステップを追加したい、とコマンドがあります「いいえ」を選択した場合は中止されます。
これは簡単に行うことができますが、これは組み込みの管理コマンドで発生するためですが、チュートリアルや組み込みの管理コマンドのソースを調べてもそれをカバーしていないようです。管理コマンドでは、私自身でそれを理解することができませんでした。
入力を求めるのは単なる基本的なpythonです。 Djangoのソースコードの例は、[here](https://github.com/django/django/blob/59afe61a970dd60df388e7cda9041ef3c0e770cb/django/db/migrations/questioner.py#L87)にあります。 – knbk
まあまあ。 'input()'は私が最初に試したことですが、私が作ったに違いないミスのために初めて試してみました。それは私が探しているようです。ありがとうございました。答えとして投稿してください、私はそれを受け入れます! – elethan