我正在使用Django 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):
...
任何人都可以帮助我吗?
答案 0 :(得分:2)
您将实例归因于form_class
而不是属性名称所暗示的表单类。 SignForm
是类,SignForm(*args)
是一个实例。
您应该覆盖视图中的get_initial()
方法:
def get_initial():
return {'book_name': 'aaaa'}
答案 1 :(得分:2)
与上述评论一样,您必须将form_class
仅分配给班级。通过使用括号和参数执行的操作,您将实例化一个对象,这就是您有异常的原因。
相反,要设置初始数据,请定义get_initial
函数,如下所示:
def get_initial(self):
initial = super(SignView, self).get_initial()
initial['book_name'] = 'aaaa'
return initial