Django中出现AttributeError:'BookForm'对象无'get'属性,求调试帮助
解决AttributeError: 'BookForm' object has no attribute 'get'的问题
嘿,我一眼就揪出问题所在啦!你这段代码里的BookForm继承错了类,才导致出现这个AttributeError。
问题根源
你现在的BookForm继承自forms.Form,但同时又用了Meta类关联Book模型——这完全不对!forms.Form是用来创建和模型无关的自定义表单的,它本身没有和模型绑定的逻辑,自然也没有get方法(这个方法是ModelForm特有的,用来从模型实例加载数据)。而你想要的是和Book模型绑定的表单,应该继承forms.ModelForm才对。
修正后的forms.py代码
把父类改成forms.ModelForm就搞定了:
from django import forms from .models import Book class BookForm(forms.ModelForm): # 这里替换成ModelForm class Meta: model = Book fields = ['title', 'sub_title', 'author', 'image', 'price', 'description', 'ISBN', 'number_of_pages','dimensions', 'interior_pages','binding','availability','genre']
为什么这样能解决问题?
ModelForm是Django专门为模型设计的表单类,它内置了和模型交互的一系列方法(比如get、save等),能自动根据模型字段生成表单,还能直接从模型实例中读取数据填充表单。而普通的Form类没有这些和模型绑定的特性,所以当你尝试调用它不存在的get方法时,就会抛出这个错误。
如果你的视图里是用类似BookForm.get(...)或者通过表单实例调用get方法的话,修正父类后这个方法就存在了,错误也就消失啦。
内容的提问来源于stack exchange,提问作者Chidananda Nayak
相关产品推荐
相关产品推荐

