我正在尝试使用子进程运行一个命令,该命令运行良好,然后它应该使用打印函数吐出该值,这也可以完美运行。
cmd = subprocess.check_output(["golemcli", "tasks", 'create',unique_filename]).decode(sys.stdout.encoding)
test = print(cmd)
这将打印类似“cc490086-d851-11e8-9ca6-a6389e8e7978
”的内容
现在我想将其保存到我的数据库中。我创建了一个看起来像
的模型class Usertasks(models.Model):
TaskID = models.CharField(max_length=40)
user = models.CharField(max_length=30)
这就是我的 View 保存数据的方式。
r = Usertasks(user=request.user, TaskID=test,)
r.save()
但是当我尝试保存打印数据时,它会变成 NULL 值?我的 Django 提示以下异常值:
NOT NULL constraint failed: myproject_usertasks.TaskID
我该如何解决这个问题?
最佳答案
问题是 print(..)
本身不返回传递的值,它打印一些东西,然后返回无
,如果要将cmd
转换为str
ing,可以使用str(..)
构造函数,或者你可以 - 给定 cmd
是一个类似字符串的对象,只需使用 cmd
。
接下来,您的 user
是 CharField
,而不是 User
对象的 ForeignKey
,因此您将拥有将其转换为字符串,但这不是可取的。我强烈建议考虑将其转换为 ForeignKey
,因为如果您稍后更改 User
的用户名,那么您存储的 username
在 UserTasks
模型中,将引用不存在的用户。
因此,您可以使用以下方法构造(并同时保存)Usertasks
对象:
r = Usertasks.object.create(user=<b>request.user.username</b>, TaskID=cmd)
但如上所述,存储用户
的用户名并不是一个好主意。
关于python - Django 尝试将值保存到数据库,但当我尝试保存时值变成 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52989564/