python - Django 属性错误 - 表单对象没有属性“is_valid”
问题描述
尝试将表单数据插入表单时,我收到一个错误,对象没有属性“is_valid”。下面是我的代码结构:
视图.py:
def add_user(request):
form = Car(request.POST)
if request.method == 'POST' and form.is_valid():
last_store = form.cleaned_data.get['value']
make = request.POST.get('make', '')
model = request.POST.get('model', '')
..
car_obj = Car(last_store = last_store, make = make, model = model, series = series, series_year = series_year, price_new = price_new, engine_size = engine_size, fuel_system = fuel_system, tank_capacity = tank_capacity, power = power, seating_capacity = seating_capacity, standard_transmission = standard_transmission, body_type = body_type, drive = drive, wheelbase = wheelbase, available = available)
car_obj.save()
return HttpResponseRedirect('/inventory/add/')
else:
form = Car()
return render(request, 'cars/inventory-add.html', {})
班级:
class Car(models.Model):
make = models.CharField(max_length=200, null=False)
model = models.CharField(max_length=200, null=False)
series = models.CharField(max_length=200, null=False)
series_year = models.IntegerField(null=False)
price_new = models.IntegerField(null=False)
..
last_store = models.ForeignKey(Store, on_delete=models.DO_NOTHING, related_name="last_store")
available = models.BooleanField(null=False, default=True)
def __str__(self):
return(self.make + " " + self.model)
CarForm (forms.py)
class CarForm(forms.ModelForm):
class Meta:
model = Car
fields = ['last_store', 'make', 'model', 'series', 'series_year', 'price_new', 'engine_size', 'fuel_system', 'tank_capacity', 'power', 'seating_capacity', 'standard_transmission', 'body_type', 'drive', 'wheelbase', 'available']
错误在于last_store
as without form.is_valid()
,显然我不能使用form.cleaned_data
,但form.is_valid()
似乎甚至不存在?正如在课堂上看到的那样,last_store
它的类型是外键,因此当用户在表单中输入输入时,我正在努力为其设置默认值。该last_store
变量正在尝试从包含 SELECT 选项的输入表单数据中获取值。
解决方案
您的模型和表单之间存在冲突,它们都命名为Car
. 通常,您可以通过重命名表单来解决此问题CarForm
。
请注意,您通常不需要使用car_obj = Car(...)
. 如果您使用模型形式,您可以将您的代码简化为car_obj = form.save()
. 您还应该CarForm(request.POST)
在if request.method == 'POST'
检查中移动,并包含form
在模板上下文中。把它们放在一起,你会得到类似的东西:
def add_user(request):
if request.method == 'POST':
form = CarForm(request.POST)
if form.is_valid():
car_obj = form.save()
return HttpResponseRedirect('/inventory/add/')
else:
form = CarForm()
return render(request, 'cars/inventory-add.html', {'form': form})
推荐阅读
- python - 返回 n 叉树中从根到叶的所有路径
- artificial-intelligence - 使用 Amazon 人脸识别 NodeJS 找到最合适的图像
- java - Java 程序在调用 Thread#join() 方法时冻结
- flutter - 文本小部件溢出选项似乎不起作用
- python - 计算字典中项目的出现次数?
- python - 在数据流上运行 wordcount 时,获取匿名调用者没有 storage.objects.create 访问错误
- twitter-bootstrap - vue b-table 将一列改成链接
- php - php 从字符串中获取两个整数然后应用乘法运算
- delta - 禁用编译器优化以验证差异算法
- debugging - Blazor WASM:生产环境的详细错误