python - Django formview form_valid,表单没有属性`instance`
问题描述
我正在尝试使用FormView
该类创建一个表单视图。它可以很好地显示发布表单,但是在发布数据form_valid
函数时会被调用,在这里我得到一个错误:
AttributeError: 'GameForm' object has no attribute 'instance'
据我所知,form_valid 方法中传递的表单对象不包含实例,但示例表明它是可能的。我错过了什么?
视图.py
from django.shortcuts import render, redirect
from django.views.generic import (ListView, DetailView)
from django.views.generic.edit import FormView
from .models import Game
from .forms import GameForm
# ... Other views
class GameCreateView(FormView):
template_name = 'games/game_form.html'
form_class = GameForm
success_url = '/'
def form_valid(self, form):
# This method is called when valid form data has been POSTed.
# It should return an HttpResponse.
form.instance.author = self.request.user
return super().form_valid(form)
表格.py
class GameForm(forms.ModelForm):
name = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Title'}),
label="Spel naam")
description = forms.CharField(required=False,
widget=forms.Textarea)
materials = forms.CharField(required=False,
widget=forms.Textarea)
duration_min = forms.IntegerField(required=False, label="Min. tijd")
duration_max = forms.IntegerField(required=False, label="Max. tijd")
group_size_min = forms.IntegerField(required=False, label="Min. aantal personen")
group_size_max = forms.IntegerField(required=False, label="Max. aantal personen")
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.layout = Layout(
'name',
Row(
Column('duration_min', css_class='form-group col-md-2 mb-0'),
Column('duration_max', css_class='form-group col-md-2 mb-0'),
css_class='form-row'
),
Row(
Column('group_size_min', css_class='form-group col-md-2 mb-0'),
Column('group_size_max', css_class='form-group col-md-2 mb-0'),
css_class='form-row'
),
'description',
'materials',
Submit('submit', 'Post')
)
网站日志
AttributeError at /game/new/
'GameForm' object has no attribute 'instance'
Request Method: POST
Request URL: http://127.0.0.1:8000/game/new/
Django Version: 3.1.3
Exception Type: AttributeError
Exception Value:
'GameForm' object has no attribute 'instance'
Django 版本 = 3.1.3
提前致谢!
编辑添加 forms.py
解决方案
推荐阅读
- visual-studio-code - 如何在 VSCode 中为 JavaScript 的函数参数自动完成?
- python - 正则表达式查找两个 html 标签之间的所有内容
- css - 如何更改下拉菜单的高度?
- alexa - 如何为电子邮件地址创建自定义插槽
- r - 将 DataFrame 子集一列,然后在另一列中赋值
- javascript - 放置 $('#header').load('header.html') 脚本后,导航栏下拉菜单向左移动
- django - django设置中记录器和处理程序中级别的目的是什么?
- java - 千分尺:一段时间内系统中的活跃用户数?
- .net - 数据库更新后是否可以删除 EF Core 数据库迁移
- python - 根据架构标准隔离 url 列表