Python int()参数必须是字符串、类似字节的对象或数字,而不是';QueryDict&x27;
最近,当我单击submit和默认用户外键时,我试图将数据保存到数据库中。但我被错误缠住了,试图通过查看web来解决问题,但没有发现任何类似的问题 我的观点 我的模特 我的错误 我们将非常感谢您的帮助。上次没有外键的情况下尝试过,我能够保存数据。但我希望特定用户保存其数据并仅查看其数据Python int()参数必须是字符串、类似字节的对象或数字,而不是';QueryDict&x27;,python,django,Python,Django,最近,当我单击submit和默认用户外键时,我试图将数据保存到数据库中。但我被错误缠住了,试图通过查看web来解决问题,但没有发现任何类似的问题 我的观点 我的模特 我的错误 我们将非常感谢您的帮助。上次没有外键的情况下尝试过,我能够保存数据。但我希望特定用户保存其数据并仅查看其数据 TypeError at / int() argument must be a string, a bytes-like object or a number, not 'QueryDict' Request Me
TypeError at /
int() argument must be a string, a bytes-like object or a number, not 'QueryDict'
Request Method: POST
Request URL: http://127.0.0.1:8000/
Django Version: 2.2.8
Exception Type: TypeError
Exception Value:
int() argument must be a string, a bytes-like object or a number, not 'QueryDict'
Exception Location: D:\Django\TimeSheetProject\morabu\lib\site-packages\django\db\models\fields\__init__.py in get_prep_value, line 972
Python Executable: D:\Django\TimeSheetProject\morabu\Scripts\python.exe
Python Version: 3.7.2
Python Path:
['D:\\Django\\TimeSheetProject',
'D:\\Django\\TimeSheetProject\\morabu\\Scripts\\python37.zip',
'D:\\Django\\TimeSheetProject\\morabu\\DLLs',
'D:\\Django\\TimeSheetProject\\morabu\\lib',
'D:\\Django\\TimeSheetProject\\morabu\\Scripts',
'c:\\program files\\python\\Lib',
'c:\\program files\\python\\DLLs',
'D:\\Django\\TimeSheetProject\\morabu',
'D:\\Django\\TimeSheetProject\\morabu\\lib\\site-packages']
Server time: Fri, 27 Dec 2019 04:35:51 +0900
您需要删除
post=TimesheetDetails(request.post,request.FILES)
行,因为TimesheetDetails
不是表单。话虽如此,最好还是这样做
另一个问题是请求中的'foo'和'bar'。POST
只会检查'bar'
是否在请求中。POST
,因为它只会评估'foo'
的真实性,而非空字符串的真实性为True
@login_required(login_url="/login")
def create_timesheet_view(request):
if request.method=="POST":
print(request.POST)
if all(x in request.POST for x in ('dateToday', 'dayToday', 'startTime', 'endTime', 'breakTime', 'weekType', 'attendance', 'normalTime', 'extraTime', 'holidayTime', 'workContent')):
post = TimesheetDetails.objects.create(
user=request.user,
date=request.POST.get('dateToday'),
day=request.POST.get('dayToday'),
startTime=request.POST.get('startTime'),
endTime=request.POST.get('endTime'),
breakTime=request.POST.get('breakTime'),
normalTime=request.POST.get('normalTime'),
overTime=request.POST.get('extraTime'),
holidayTime=request.POST.get('holidayTime'),
weekType=request.POST.get('weekType'),
attendance=request.POST.get('attendance'),
content=request.POST.get('workContent')
)
return redirect('/list')
return render(request,'timesheet/create_timesheet.html')
但是在这里定义一个ModelForm
肯定更好,因为这样可以删除很多样板代码
此外,您可能最好在重定向(..)
调用中使用视图的名称,而不是绝对路径。TimesheetDetails
不是表单,因此post=TimesheetDetails(request.post,request.FILES)
毫无意义。我想使用表单,但我的问题是我的一些字段需要自动生成。我将输入一天的工作开始时间和结束时间,在检查完日期、结束时间和开始时间后,我将自动生成表格值,如我的休息时间、我工作了多少小时以及我是否有额外的工作时间。到目前为止,还没有找到任何带有表单的js源代码。如果你能帮助我,我将不胜感激。
TypeError at /
int() argument must be a string, a bytes-like object or a number, not 'QueryDict'
Request Method: POST
Request URL: http://127.0.0.1:8000/
Django Version: 2.2.8
Exception Type: TypeError
Exception Value:
int() argument must be a string, a bytes-like object or a number, not 'QueryDict'
Exception Location: D:\Django\TimeSheetProject\morabu\lib\site-packages\django\db\models\fields\__init__.py in get_prep_value, line 972
Python Executable: D:\Django\TimeSheetProject\morabu\Scripts\python.exe
Python Version: 3.7.2
Python Path:
['D:\\Django\\TimeSheetProject',
'D:\\Django\\TimeSheetProject\\morabu\\Scripts\\python37.zip',
'D:\\Django\\TimeSheetProject\\morabu\\DLLs',
'D:\\Django\\TimeSheetProject\\morabu\\lib',
'D:\\Django\\TimeSheetProject\\morabu\\Scripts',
'c:\\program files\\python\\Lib',
'c:\\program files\\python\\DLLs',
'D:\\Django\\TimeSheetProject\\morabu',
'D:\\Django\\TimeSheetProject\\morabu\\lib\\site-packages']
Server time: Fri, 27 Dec 2019 04:35:51 +0900
@login_required(login_url="/login")
def create_timesheet_view(request):
if request.method=="POST":
print(request.POST)
if all(x in request.POST for x in ('dateToday', 'dayToday', 'startTime', 'endTime', 'breakTime', 'weekType', 'attendance', 'normalTime', 'extraTime', 'holidayTime', 'workContent')):
post = TimesheetDetails.objects.create(
user=request.user,
date=request.POST.get('dateToday'),
day=request.POST.get('dayToday'),
startTime=request.POST.get('startTime'),
endTime=request.POST.get('endTime'),
breakTime=request.POST.get('breakTime'),
normalTime=request.POST.get('normalTime'),
overTime=request.POST.get('extraTime'),
holidayTime=request.POST.get('holidayTime'),
weekType=request.POST.get('weekType'),
attendance=request.POST.get('attendance'),
content=request.POST.get('workContent')
)
return redirect('/list')
return render(request,'timesheet/create_timesheet.html')