我试图在Django数据库上发布两个DateTime对象
class Timesheet(models.Model):
task_id = models.AutoField(primary_key=True)
project = models.ForeignKey('Project', on_delete=models.CASCADE)
user = models.ForeignKey('User', on_delete=models.CASCADE)
task_title = models.CharField(max_length=250)
task_description = models.TextField(null=True)
PRIORITY_STATUS = [
('H','High'),
('M','Medium'),
('L','Low'),
]
priority = models.CharField(max_length=1, choices=PRIORITY_STATUS)
starting_time = models.DateTimeField()
ending_time = models.DateTimeField()
def __str__(self):
return str(self.task_title)
class timeSheetForm(ModelForm):
class Meta:
model=Timesheet
fields=['project','user','task_title','task_description','priority','starting_time','ending_time']
class timeSheetForm(forms.Form):
#other fields
starting_time = forms.DateTimeField(widget=AdminSplitDateTime())
ending_time = forms.DateTimeField(widget=AdminSplitDateTime())
def memberDash(request):
if request.method == 'POST':
newTimeSheet = Timesheet()
newTimeSheet.project = Project.objects.get(pk=request.POST["project"])
newTimeSheet.user = User.objects.get(pk=request.POST["user"])
newTimeSheet.task_title = request.POST["task_title"]
newTimeSheet.task_description = request.POST["task_description"]
newTimeSheet.priority = request.POST["priority"]
newTimeSheet.starting_time = request.POST["starting_time"]
newTimeSheet.ending_time = request.POST["ending_time"]
newTimeSheet.save()
return render(request,'timeSheetApp/dashboard.html')
else:
form = timeSheetForm()
context={
'form':form,
}
return render(request,'timeSheetApp/dashboard.html',context)
<form action="/memberDashboard/" method="POST">
{% csrf_token %}
<label for="starting_time" class="col-lg-1 col-form-label">Start Time</label>
{{form.starting_time}}
<label for="ending_time" class="col-lg-1 col-form-label">End Time</label>
{{form.ending_time}}
<button type="submit" class="btn btn-primary">
<strong>Create Time-Sheet</strong>
</button>
</form>
在提交此表格时,多值错误被提出,第二双眼睛在这里会有很大帮助,因为我没有得到我在这里缺少的东西。Django的新手,如果发布了一个愚蠢的问题,那么很抱歉
错误日志文件:
Environment:
Request Method: POST
Request URL: http://127.0.0.1:8000/memberDashboard/
Django Version: 2.2
Python Version: 3.7.2
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'timeSheetApp']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback:
File "C:\Users\DELL\AppData\Local\Programs\Python\Python37\lib\site-packages\django\utils\datastructures.py" in __getitem__
78. list_ = super().__getitem__(key)
During handling of the above exception ('starting_time'), another exception occurred:
File "C:\Users\DELL\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\handlers\exception.py" in inner
34. response = get_response(request)
File "C:\Users\DELL\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\handlers\base.py" in _get_response
115. response = self.process_exception_by_middleware(e, request)
File "C:\Users\DELL\AppData\Local\Programs\Python\Python37\lib\site-packages\django\core\handlers\base.py" in _get_response
113. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "E:\TimeSheet\timeSheet\timeSheetApp\views.py" in memberDash
19. newTimeSheet.starting_time.date = request.POST["starting_time"].date()
File "C:\Users\DELL\AppData\Local\Programs\Python\Python37\lib\site-packages\django\utils\datastructures.py" in __getitem__
80. raise MultiValueDictKeyError(key)
Exception Type: MultiValueDictKeyError at /memberDashboard/
Exception Value: 'starting_time'
谢谢你抽出时间
抱歉,我正在初始化模态类本身,而不是ModalForm。 在视图中,py应为:
如果要使用多值小部件,需要使用
forms.SplitDateTimeField
:这是因为这个小部件在引擎盖下使用了两个表单小部件,字段需要知道如何将两个小部件值放入一个字段值中,以保存到一个模型字段中。更多信息请参见the documentation
相关问题 更多 >
编程相关推荐