已解决:
try-catch在此过程的后续步骤中找到了一些东西
我将这些步骤移出了尝试-抓住并解决了这些问题
我正在尝试构建一个可以针对单个模型对象运行的自定义Django命令
当我签入shell时,我看到对象很好
>>> Obj.objects.get(id=1)
<Obj: the object I'm looking for>
但是我的自定义命令如下所示:
# app/management/update.py
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument('--id')
def handle(self, *args, **options):
if options['id']:
try:
obj = Obj.objects.get(id=options['id'])
# do things
except:
raise CommandError('no object with ID: "%s"' % options['id'])
else:
# do other things
运行此命令我会收到错误消息
>>> python manage.py update --id 1
CommandError: no object with ID: "1"
任何帮助表示赞赏。
谢谢
答案 0 :(得分:0)
Id应该是整数,而不是字符串。
parser.add_argument('--id', type=int)
默认情况下,
ArgumentParser
个对象以 简单的字符串。但是,命令行字符串通常应该 而是解释为另一种类型,例如float
或int
。type
add_argument()
的关键字参数允许进行任何必要的类型检查 并进行类型转换。