Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django表单验证:不支持从dict到Decimal的/student/home转换中的TypeError_Python_Django_Django Models_Django Forms_Django Views - Fatal编程技术网

Python Django表单验证:不支持从dict到Decimal的/student/home转换中的TypeError

Python Django表单验证:不支持从dict到Decimal的/student/home转换中的TypeError,python,django,django-models,django-forms,django-views,Python,Django,Django Models,Django Forms,Django Views,我的模型中有一个十进制字段 current_CGPA = models.DecimalField(blank=True,null=True,decimal_places=2,max_digits=4) 我正在使用Modelform验证我的表单 class StudentAcademicsForm(ModelForm): class Meta: model = Student fields = ['current_CGPA'] 我使用自定义模板进行表单渲

我的模型中有一个十进制字段

current_CGPA = models.DecimalField(blank=True,null=True,decimal_places=2,max_digits=4)
我正在使用Modelform验证我的表单

class StudentAcademicsForm(ModelForm):
    class Meta:
        model = Student
        fields = ['current_CGPA']
我使用自定义模板进行表单渲染

<label class="form-label" for="current_CGPA">CGPA upto previous semester</label>
<input class="form-control" type="number" step="0.01" placeholder="CGPA" id="current_CGPA" name="current_CGPA" {% if student.current_CGPA is not None %}value="{{student.current_CGPA}}"{% endif %} required min=0 max=10/>
            {{form.current_CGPA.errors}}
出现以下错误:

TypeError at /student/home
conversion from dict to Decimal is not supported
在查看stacktrace时,我发现我的字段“current\u CGPA”上的
get\u attr()
方法以以下格式返回POST的所有属性
{
“当前CGPA”:3,。。。
}
我认为它应该只返回值“3” 但这是django内置代码完成的 那么这是一只虫子吗? 以前有人用过DecimalField吗? 如果是这样的话,请纠正我,如果我做了什么

Stacktrace如下所示:

Environment:


Request Method: POST
Request URL: http://localhost:8000/student/home

Django Version: 2.0
Python Version: 3.7.0
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'whitenoise.runserver_nostatic',
 'django.contrib.staticfiles',
 'gep_app.apps.GepAppConfig']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'whitenoise.middleware.WhiteNoiseMiddleware',
 '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 "/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py" in inner
  35.             response = get_response(request)

File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
  128.                 response = self.process_exception_by_middleware(e, request)

File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
  126.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/usr/local/lib/python3.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
  21.                 return view_func(request, *args, **kwargs)

File "/usr/local/lib/python3.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
  21.                 return view_func(request, *args, **kwargs)

File "/code/gep_project/gep_app/views.py" in student_home
  49.       if form.is_valid():

File "/usr/local/lib/python3.7/site-packages/django/forms/forms.py" in is_valid
  179.         return self.is_bound and not self.errors

File "/usr/local/lib/python3.7/site-packages/django/forms/forms.py" in errors
  174.             self.full_clean()

File "/usr/local/lib/python3.7/site-packages/django/forms/forms.py" in full_clean
  378.         self._post_clean()

File "/usr/local/lib/python3.7/site-packages/django/forms/models.py" in _post_clean
  401.             self.instance.full_clean(exclude=exclude, validate_unique=False)

File "/usr/local/lib/python3.7/site-packages/django/db/models/base.py" in full_clean
  1144.             self.clean_fields(exclude=exclude)

File "/usr/local/lib/python3.7/site-packages/django/db/models/base.py" in clean_fields
  1186.                 setattr(self, f.attname, f.clean(raw_value, self))

File "/usr/local/lib/python3.7/site-packages/django/db/models/fields/__init__.py" in clean
  606.         value = self.to_python(value)

File "/usr/local/lib/python3.7/site-packages/django/db/models/fields/__init__.py" in to_python
  1553.             return decimal.Decimal(value)

Exception Type: TypeError at /student/home
Exception Value: conversion from dict to Decimal is not supported`

这是StudentAcademicForm的完整代码吗?您是否定义了任何自定义清理方法?找到了解决方案..是的,我在clean_字段方法中写入了我返回的完整数据,这就是问题所在
Environment:


Request Method: POST
Request URL: http://localhost:8000/student/home

Django Version: 2.0
Python Version: 3.7.0
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'whitenoise.runserver_nostatic',
 'django.contrib.staticfiles',
 'gep_app.apps.GepAppConfig']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'whitenoise.middleware.WhiteNoiseMiddleware',
 '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 "/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py" in inner
  35.             response = get_response(request)

File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
  128.                 response = self.process_exception_by_middleware(e, request)

File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
  126.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/usr/local/lib/python3.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
  21.                 return view_func(request, *args, **kwargs)

File "/usr/local/lib/python3.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
  21.                 return view_func(request, *args, **kwargs)

File "/code/gep_project/gep_app/views.py" in student_home
  49.       if form.is_valid():

File "/usr/local/lib/python3.7/site-packages/django/forms/forms.py" in is_valid
  179.         return self.is_bound and not self.errors

File "/usr/local/lib/python3.7/site-packages/django/forms/forms.py" in errors
  174.             self.full_clean()

File "/usr/local/lib/python3.7/site-packages/django/forms/forms.py" in full_clean
  378.         self._post_clean()

File "/usr/local/lib/python3.7/site-packages/django/forms/models.py" in _post_clean
  401.             self.instance.full_clean(exclude=exclude, validate_unique=False)

File "/usr/local/lib/python3.7/site-packages/django/db/models/base.py" in full_clean
  1144.             self.clean_fields(exclude=exclude)

File "/usr/local/lib/python3.7/site-packages/django/db/models/base.py" in clean_fields
  1186.                 setattr(self, f.attname, f.clean(raw_value, self))

File "/usr/local/lib/python3.7/site-packages/django/db/models/fields/__init__.py" in clean
  606.         value = self.to_python(value)

File "/usr/local/lib/python3.7/site-packages/django/db/models/fields/__init__.py" in to_python
  1553.             return decimal.Decimal(value)

Exception Type: TypeError at /student/home
Exception Value: conversion from dict to Decimal is not supported`