Python int()参数必须是字符串、类似字节的对象或数字,而不是';QueryDict&x27;

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

最近,当我单击submit和默认用户外键时,我试图将数据保存到数据库中。但我被错误缠住了,试图通过查看web来解决问题,但没有发现任何类似的问题

我的观点 我的模特 我的错误 我们将非常感谢您的帮助。上次没有外键的情况下尝试过,我能够保存数据。但我希望特定用户保存其数据并仅查看其数据

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')