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