You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:37:05