我正在尝试访问查询集中的表单数据,并引发以下错误:
int()参数必须是字符串,类似字节的对象或数字,而不是'MaterialRequest'
Views.py
G
在打印语句中说s_o为1,但是我不能将其与查询中的ID等同? 我做错了什么,该如何解决?
这是回溯:
跟踪:
def form_valid (self, form):
docket = form.save(commit=False)
print("material request id is", form.cleaned_data['sales_order'])
s_o = form.cleaned_data['sales_order']
MaterialRequest.objects.filter(id=s_o).update(is_allocated = True)
docket.save()
messages.success(self.request, 'The Docket was created with success!')
return redirect('employee:allotment-view')
答案 0 :(得分:1)
您可以轻松地删除代码中的步骤之一,因为您正在接收MaterialRequest对象,因此无需再次查找它:
def form_valid (self, form):
docket = form.save(commit=False)
print("material request id is", form.cleaned_data['sales_order'])
s_o = form.cleaned_data['sales_order']
s_o.update(is_allocated = True)
docket.save()
messages.success(self.request, 'The Docket was created with success!')
return redirect('employee:allotment-view')
应该在不使用不需要的查询的情况下工作。 另外,我们应该假设id是主键,所以您应该使用get而不是filter,因为filter会给您查询集而不是单个对象。