gpt4 book ai didi

python - Django 管理命令参数

转载 作者:行者123 更新时间:2023-11-30 22:08:15 25 4
gpt4 key购买 nike

我正在尝试了解 Django 管理命令的工作原理。

当没有争论,或者 self 独立时。我的命令运行良好。当我向第二个函数“def add_arguments”添加参数时,似乎一个参数有效,但另一个没有注册。

我的命令如下:

from backend.tasks import MBCommand
import sys

class Command(MBCommand):
help = 'Refreshes MB data'

def add_arguments(self , parser):
parser.add_argument('event_id' , nargs='+' , type=int,
help='evid')
parser.add_argument('market_id', nargs='+', type=int,
help='marid')

def handle(self, *args, **kwargs):

self.mb_get_events()

event_ids = kwargs['event_id']
market_ids = kwargs['market_id']

for event_id in event_ids:
for market_id in market_ids:


self.mb_get_runners(event_id,market_id)
sys.exit()

我的两个功能是,

from django.core.management.base import BaseCommand, CommandError
class MBCommand(BaseCommand):

def mb_get_events(self):
do something


def mb_get_runners(self, event_id, market_id):
do something

我在这里缺少什么?

如何运行命令(update_mb 是命令的文件名)

python manage.py update_mb  event_id market_id

错误。

usage: manage.py update_mb [-h] [--version] [-v {0,1,2,3}]
[--settings SETTINGS] [--pythonpath
PYTHONPATH]
[--traceback] [--no-color]
event_id [event_id ...] market_id [market_id
...]
manage.py update_mb: error: argument event_id: invalid int
value:
'event_id'
(butterbotenv) macs-MBP:butterbot mac$

最佳答案

正如我在问题评论中已经说过的:

该命令需要一个(或多个)int 类型的参数;但正如错误所述,它无法将接收到的参数转换为 int

尝试传递数字;而不是

python manage.py update_mb event_id market_id

尝试使用这个(或类似的东西)

python manage.py update_mb 2 3 4
<小时/>

但我注意到您的代码有一个问题:您对两个参数都使用 parser.add_argument(... nargs='+', ...) 。考虑我之前给出的例子:

python manage.py update_mb 2 3 4

该命令如何知道哪些是 event_id 哪些是 market_id?它对你来说怎么样?

一项改进可能是使用可选参数;了解更多关于 Djangos custom management commands和底层Python argparse module 。它可能看起来像这样:

def add_arguments(self , parser):
parser.add_argument('--event', action='append', type=int)
parser.add_argument('--market', action='append', type=int)

像这样使用:

>>> python manage.py update_mb --event 2 --event 3 --market 4

关于python - Django 管理命令参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52229539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com