Python Django:表单失败的动态初始值
我正在使用DjangoPython Django:表单失败的动态初始值,python,django,forms,Python,Django,Forms,我正在使用DjangoDjango.forms.Form和Django.views.generic.edit.FormView来呈现HTML模板 我想为表单中的某些字段添加默认值,但遇到了一个问题: 这是我的密码: from django.views.generic.base import TemplateView from django.views.generic.edit import FormView class SignForm(forms.Form): greeting_m
Django.forms.Form
和Django.views.generic.edit.FormView
来呈现HTML模板
我想为表单中的某些字段添加默认值,但遇到了一个问题:
这是我的密码:
from django.views.generic.base import TemplateView
from django.views.generic.edit import FormView
class SignForm(forms.Form):
greeting_message = forms.CharField(
label='Greeting message',
widget=forms.Textarea,
required=True,
max_length=100,
)
book_name = forms.CharField(
label='Guestbook name',
max_length=10,
required=True,
)
class SignView(FormView):
"""Assign initial value for field 'book_name'."""
form_class = SignForm(
initial={
'book_name': 'aaaa'
}
)
def form_valid(self, form):
...
有人能帮我吗?您将实例属性化为
form\u class
,而不是属性名称所暗示的表单类SignForm
是类,SignForm(*args)
是实例
您应该覆盖视图中的get\u initial()
方法:
def get_initial():
return {'book_name': 'aaaa'}
正如上面的评论所说,您必须将
form\u class
仅分配给该类。通过使用括号和参数,您正在实例化一个对象,这就是出现异常的原因
相反,要设置初始数据,请定义get_initial
函数,如下所示:
def get_initial(self):
initial = super(SignView, self).get_initial()
initial['book_name'] = 'aaaa'
return initial
form\u class=SignForm(…)
正在初始化表单,它应该只是定义要使用的表单。尝试将其更改为form\u class=SignForm
,至于设置初始值,请查看以下问题: