Django报错ValueError: ModelForm has no model class specified解决咨询
问题解决方法
1 核心报错(ValueError: ModelForm has no model class specified)的修复
错误出在forms.py的代码中:Django要求ModelForm的配置内部类名称必须是大写开头的Meta,你当前写的是小写的meta,Django无法识别到配置类,自然找不到绑定的model类。
修改后的forms.py代码:
from django import forms from TaskManager.models import Semana class FormularioSemana(forms.ModelForm): # 把meta改成大写Meta即可解决核心报错 class Meta: model = Semana fields = '__all__' widgets = {'lunes_inicio': forms.TimeInput(attrs={'type': 'time'})}
改完这个核心错误后,你的原始报错就会消失,另外还有几个其他代码错误会导致后续运行异常,也需要同步修改:
2 其他需要修复的代码问题
views.py 中的问题
- 视图类继承错误,不该继承
HttpRequest,应该继承Django的View基类,同时类方法需要加@classmethod装饰器 - 获取POST参数的属性是大写的
request.POST,不是小写的request.post - 返回的
"mensaje": OK中OK是字符串,需要加引号
修正后的views.py参考:
from django.shortcuts import render from django.http import HttpResponse from django.views import View from .models import Semana from .forms import FormularioSemana def task(request): return HttpResponse("Hello, world. You're at the polls index.") class FormularioSemanaView(View): @classmethod def index(cls, request): semana = FormularioSemana() return render(request, "semana.html", {"form":semana}) @classmethod def procesar(cls, request): semana = FormularioSemana(request.POST) if semana.is_valid(): semana.save() semana = FormularioSemana() return render(request, "semana.html", {"form":semana, "mensaje": "OK"})- 视图类继承错误,不该继承
内容的提问来源于stack exchange,提问作者DSTdan
相关产品推荐
相关产品推荐

