Saya memiliki perintah manajemen dengan bagian parser argumen berikut:

class Command(BaseCommand):
    def add_arguments(self, parser):
        parser.add_argument('--out', action='store', dest='out', required=True)
        parser.add_argument('--todos', action='store', dest='todos', \
                required=True, nargs='+')
        parser.add_argument('--filter', action='store', dest='filter')
        parser.add_argument('--list', action='store', dest='list')
        parser.add_argument('--add_id', action='store_true', dest='add_id')

. Saya mencoba memanggil perintah ini dari tampilan/Shell, tetapi tidak berfungsi:

from django.core.management import call_command
call_command('prg_name', out='/tmp/111.txt')

, namun saya mendapatkan kesalahan berikut: argument --out is required .

Programnya agak lama: python: 2.7 Django: 1.11.16

.

Bagaimana saya harus memanggil call_command dengan parameter dengan tata letak lama ini?

Apa yang aneh, jika saya melakukan ini:

dt = {'--out=/tmp/111.txt': sth}
call_command(prg_name, *dt)

Itu berfungsi, namun saya tidak dapat menentukan nilai lebih untuk --todos .

1
user2194805 8 Maret 2020, 00:25

1 menjawab

Jawaban Terbaik

Anda bisa meneruskan sejumlah string sewenang-wenang ke perintah:

call_command(prg_name, '--out=/tmp/111.txt', '--todos', '8', '12', '105', '51')

Anda dapat melihat ini sebagai parameter yang akan Anda berikan ke program Anda jika Anda memanggilnya dari baris perintah.

0
Willem Van Onsem 7 Maret 2020, 22:03