将负值作为参数传递给django中的自定义管理命令

将负值作为参数传递给django中的自定义管理命令,django,Django,和其他许多人一样,我一直在通过构建一个测试应用程序来学习django上的web开发。我已经建立了基本模型。我已经用绝对最小数据填充了一些表,这些数据是通过使用fixture进行进一步测试所需的 现在,对于另一个表,我想通过一个接受所需参数的自定义管理命令来创建数据元组。如果按预期工作,我将通过添加--save选项将创建的数据保存到数据库中 命令的语法如下 create_raw_data owner_id temperature [--save] for index, item in enume

和其他许多人一样,我一直在通过构建一个测试应用程序来学习django上的web开发。我已经建立了基本模型。我已经用绝对最小数据填充了一些表,这些数据是通过使用fixture进行进一步测试所需的

现在,对于另一个表,我想通过一个接受所需参数的自定义管理命令来创建数据元组。如果按预期工作,我将通过添加
--save
选项将创建的数据保存到数据库中

命令的语法如下

create_raw_data owner_id temperature [--save]
for index, item in enumerate(args):
    if index == 0:
        owner_id = int(item)
    else index == 1:
        temp = int(item)
其中,
owner\u id
是必需的,而
temperature
(在C中)是可选的。在
Handle
方法中,我使用factory boy创建带有给定参数等的
raw_数据

我确实遇到了一些问题,但是在google、django docs等网站上搜索时,我的命令运行良好

除了当我输入负温度

然后我得到以下错误

Usage: C:\test\manage.py create_raw_data [options] 

Creates a RawData object. Usage:  create_raw_data owner_id temperature [--save]

C:\test\manage.py: error: no such option: -5
我用于解析args的代码如下

create_raw_data owner_id temperature [--save]
for index, item in enumerate(args):
    if index == 0:
        owner_id = int(item)
    else index == 1:
        temp = int(item)
我把
print(args)
放在
Handle
内的第一行,但似乎控件还没有到达这里

我不确定出了什么问题。。。请帮忙


非常感谢

修复了此问题,以便为可能遇到此问题的其他人提供答案


问题在于optparse的parse_args方法。我在很多地方读到过,虽然optparse不受欢迎,但建议使用argparse,django建议使用optparse,因为它就是这样使用的。长话短说,link上的链接提出了一些替代方案,使用
create_raw_data 1--5
的效果与预期一样。所以我找到了解决办法。谢谢。

解决了此问题,以便为可能遇到此问题的其他人提供答案


问题在于optparse的parse_args方法。我在很多地方读到过,虽然optparse不受欢迎,但建议使用argparse,django建议使用optparse,因为它就是这样使用的。长话短说,link上的链接提出了一些替代方案,使用
create_raw_data 1--5
的效果与预期一样。所以我找到了解决办法。谢谢。

搜索“django转义字符”-减号被视为选项的指示器,您必须告诉django这不是选项,而是您的论点之一-如果您用反斜杠转义-会发生什么<代码>\-5
我无法正确调试自定义命令。发现了这一点,再加上@KevinDTimm的提示,问题似乎出在optparse的parse_args方法上。我在很多地方读到过,虽然optparse不受欢迎,但建议使用argparse,django建议使用optparse,因为它就是这样使用的。长话短说,网站上的链接提出了一些备选方案,使用create_raw_data 1--5的效果与预期一样。所以我找到了解决办法。谢谢。@dm03514-我第一件事就试过了。这将导致ValueError:int()的文本无效,基数为10:“\\-5”,因为问题已排序。。我是否应该删除这个问题或以某种方式标记它的答案…搜索“django转义字符”-减号被视为选项的指示器,你必须告诉django它不是选项,而是你的论点之一-如果用反斜杠转义-,会发生什么<代码>\-5我无法正确调试自定义命令。发现了这一点,再加上@KevinDTimm的提示,问题似乎出在optparse的parse_args方法上。我在很多地方读到过,虽然optparse不受欢迎,但建议使用argparse,django建议使用optparse,因为它就是这样使用的。长话短说,网站上的链接提出了一些备选方案,使用create_raw_data 1--5的效果与预期一样。所以我找到了解决办法。谢谢。@dm03514-我第一件事就试过了。这将导致ValueError:int()的文本无效,基数为10:“\\-5”,因为问题已排序。。我是否应该删除该问题或以某种方式标记它的答案。。。