找不到Django自定义命令对象ID

时间:2018-08-10 13:15:22

标签: python django django-models

已解决:

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"

任何帮助表示赞赏。

谢谢

1 个答案:

答案 0 :(得分:0)

Id应该是整数,而不是字符串。

parser.add_argument('--id', type=int)
  

默认情况下,ArgumentParser个对象以   简单的字符串。但是,命令行字符串通常应该   而是解释为另一种类型,例如floatinttype   add_argument()的关键字参数允许进行任何必要的类型检查   并进行类型转换。

https://docs.python.org/3/library/argparse.html#type